AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Module Coding (https://forums.alliedmods.net/forumdisplay.php?f=9)
-   -   -fno-exceptions and throw (https://forums.alliedmods.net/showthread.php?t=81700)

Flasher 12-09-2008 16:24

-fno-exceptions and throw
 
I have a problem writing module for linux version of hl server.

If I build with -fno-exceptions I get this error:
acc/include/AccSupport.h:47: error: exception handling disabled, use -fexceptions to enable
If I build with -fexceptions module is not loading in server (I doesn't spoted any message about why it is not loaded, but it is absent in meta list output)
AccSupport.h is include from foreign library. This library seem using exceptions.

Can I somehow solve this?

PS Under Windows (for windows version of hlds) this module compiles and works.

sawce 12-11-2008 00:48

Re: -fno-exceptions and throw
 
The likely cause of it not loading with exceptions enabled is because the version of libstdc++ the binary is compiled against does not match the version on the machine, or libstdc++ may not even be on the machine.

Flasher 12-11-2008 03:37

Re: -fno-exceptions and throw
 
Quote:

Originally Posted by sawce (Post 725675)
The likely cause of it not loading with exceptions enabled is because the version of libstdc++ the binary is compiled against does not match the version on the machine, or libstdc++ may not even be on the machine.

I am run server on the same machine where I compiled the module. But any, thanks for helping. I will have a look at libstdc++.
Look at this thread:
http://forums.alliedmods.net/showthread.php?t=16859
-fno-exceptions mentioned there. May be AMXX doesn't allow modules with enabled exceptions? Can I somehow mix exceptions enabled code with wrapping it with non exception code?
I use this Makefile:
Code:

#(C)2004-2005 AMX Mod X Development Team
#(C)2008 Lev Shisterov
# Makefile written by David "BAILOPAN" Anderson
# Makefile corrected by Lev Shisterov

HLSDK = ../../../hlsdk-2.3-p3/multiplayer
MM_ROOT = ../../../metamod-1.19/metamod

### EDIT BELOW FOR OTHER PROJECTS ###

OPT_FLAGS = -O2 -funroll-loops -s -pipe -fomit-frame-pointer -fno-strict-aliasing
DEBUG_FLAGS = -g -ggdb3
CPP = gcc-4.1
NAME = icqbot

BIN_SUFFIX_32 = amxx_i386.so
BIN_SUFFIX_64 = amxx_amd64.so

OBJECTS = sdk/amxxmodule.cpp icqbot.cpp functions.cpp client.cpp PosixThreads.cpp

LINK =

INCLUDE = -I. -Iacc/include -I$(HLSDK) -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared -I$(HLSDK)/game_shared \
    -I$(MM_ROOT) -I$(HLSDK)/common -Isdk

GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)

ifeq "$(GCC_VERSION)" "4"
        OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden
endif

ifeq "$(DEBUG)" "true"
    BIN_DIR = Debug
    CFLAGS = $(DEBUG_FLAGS)
else
    BIN_DIR = Release
    CFLAGS = $(OPT_FLAGS)
endif

CFLAGS += -DNDEBUG -fPIC -Wall -Wno-non-virtual-dtor -fno-exceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc

ifeq "$(AMD64)" "true"
    BINARY = $(NAME)_$(BIN_SUFFIX_64)
    CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64
else
    BINARY = $(NAME)_$(BIN_SUFFIX_32)
    CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32
    OPT_FLAGS += -march=i586
endif

OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)

$(BIN_DIR)/%.o: %.cpp
    $(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $<

all:
    mkdir -p $(BIN_DIR)
    mkdir -p $(BIN_DIR)/sdk
    $(MAKE) icqbot

amd64:
    $(MAKE) all AMD64=true

icqbot: $(OBJ_LINUX)
    $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)

debug:   
    $(MAKE) all DEBUG=true

default: all

clean:
    rm -rf Release/sdk/*.o
    rm -rf Release/*.o
    rm -rf Release/$(NAME)_$(BIN_SUFFIX_32)
    rm -rf Release/$(NAME)_$(BIN_SUFFIX_64)
    rm -rf Debug/sdk/*.o
    rm -rf Debug/*.o
    rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32)
    rm -rf Debug/$(NAME)_$(BIN_SUFFIX_64)

If I compile with -fno-exceptions (warked no- with red in Makefile in CFLAGS) I got compilation error. With -fexceptions module is not loaded by AMXX.
Looked and found libstdc++.so.6.0.8 in /usr/bin. I am using debian 2.6.18-6 if this make sence.

Flasher 12-11-2008 12:42

Re: -fno-exceptions and throw
 
Update:
I tried to build cstrike module (it served me as example in the past). And has a luck. But this lead me to mistake. I used "meta list" to spot if module is loaded. Cstrike was shown in list.
Then I found that nvault module has -fexceptions option for build in 1.8.0 version. Tried to compile and load it. And meta list doesn't show it is loaded.
Some digging in Internet and I found that I was wrong. So I have to use "amxx modules".
Here is the output:
Code:

meta list
Currently loaded plugins:
      description      stat pend  file              vers      src  load  unlod
 [ 1] AMX Mod X        RUN  -    amxmodx_mm_i386.  v1.8.1.3  ini  Start ANY
 [ 2] CStrike          RUN  -    cstrike_amxx_i38  v1.8.0.3  pl1  ANY  ANY
2 plugins, 2 running
amxx modules
Currently loaded modules:
      name                    version    author              status
 [ 1] nVault                  1.8.0.3660  AMX Mod X Dev Team  running
 [ 2] CStrike                1.8.0.3660  AMX Mod X Dev Team  running
2 modules, 2 correct


Flasher 12-11-2008 13:08

Re: -fno-exceptions and throw
 
Finally found were I was wrong: not linked with libstdc++.
In nvault Makefile found link to libstdc++.
Added this link to my test project with -fexceptions and get it loaded:
Code:

meta list
Currently loaded plugins:
      description      stat pend  file              vers      src  load  unlod
 [ 1] AMX Mod X        RUN  -    amxmodx_mm_i386.  v1.8.1.3  ini  Start ANY
 [ 2] CStrike          RUN  -    cstrike_amxx_i38  v1.8.0.3  pl1  ANY  ANY
 [ 3] Testing          RUN  -    testing_amxx_i38  v0.1      pl1  ANY  ANY
3 plugins, 3 running
amxx modules
Currently loaded modules:
      name                    version    author              status
 [ 1] nVault                  1.8.0.3660  AMX Mod X Dev Team  running
 [ 2] CStrike                1.8.0.3660  AMX Mod X Dev Team  running
 [ 3] Testing                0.1        Lev                  running
3 modules, 3 correct

Will try in my code.


All times are GMT -4. The time now is 05:10.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.