Skip to content

Commit 5ee2c92

Browse files
authored
Fix radareorg#13196 - Honor SHARED in configure-plugins ##build
1 parent 3bb3b2d commit 5ee2c92

13 files changed

+45
-47
lines changed

configure-plugins

+32-30
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
LANG=C
99
LC_ALL=C
1010
LOADLIBS=1
11+
EXT=so
12+
[ "`uname`" = Darwin ] && EXT=dylib
1113

1214
export LANG
1315
export LC_ALL
@@ -61,11 +63,7 @@ generate_configh () {
6163
if [ ! "$oldlib" = "$lib" ]; then
6264
[ -n "$oldlib" ] && echo " 0"
6365
oldlib=$lib
64-
if type perl > /dev/null 2>&1 ; then
65-
uclib=$(echo $lib | perl -pe 'tr/[a-z]/[A-Z]/')
66-
else
67-
uclib=$(echo $lib | tr '[a-z]' '[A-Z]')
68-
fi
66+
uclib=$(echo $lib | tr '[a-z]' '[A-Z]')
6967
echo
7068
echo "#define R_${uclib}_STATIC_PLUGINS \\"
7169
plugins="${plugins} __${uclib}"
@@ -74,17 +72,13 @@ generate_configh () {
7472
done
7573
[ -n "$oldlib" ] && echo " 0"
7674

77-
# FILL EMPTY PLUGIN ARRAYS WITH LOVE
75+
# CAREFULLY FILL EMPTY PLUGIN ARRAYS
7876
for a in ${SHARED} ; do
7977
lib=$(echo $a | cut -d . -f 1) # library
8078
plg=$(echo $a | cut -d . -f 2) # plugin name
8179
if [ ! "$oldlib" = "$lib" ]; then
8280
oldlib=$lib
83-
if type perl > /dev/null 2>&1; then
84-
uclib=$(echo $lib | perl -pe 'tr/[a-z]/[A-Z]/')
85-
else
86-
uclib=$(echo $lib | tr '[a-z]' '[A-Z]')
87-
fi
81+
uclib=$(echo $lib | tr '[a-z]' '[A-Z]')
8882
if [ -z "`echo ${plugins} | grep __${uclib}`" ]; then
8983
plugins="${plugins} __${uclib}"
9084
echo
@@ -105,40 +99,35 @@ generate_asmdinc() {
10599
}
106100

107101
generate_configmk () {
102+
splugins=""
108103
plugins=""
109104
oldlib=""
110-
for a in ${STATIC} ; do
105+
for a in `echo "${STATIC} ${SHARED}" | tr " " "\n" | sort` ; do
111106
lib=$(echo $a | cut -d . -f 1) # library
112107
plg=$(echo $a | cut -d . -f 2) # plugin name
113108
if [ ! "$oldlib" = "$lib" ]; then
114109
[ -n "$oldlib" ] && printf "\n"
115110
oldlib=$lib
116-
if type perl > /dev/null 2>&1 ; then
117-
uclib=$(echo $lib | perl -pe 'tr/[a-z]/[A-Z]/')
118-
else
119-
uclib=$(echo $lib | tr '[a-z]' '[A-Z]')
120-
fi
121-
printf "STATIC_${uclib}_PLUGINS= "
111+
uclib=$(echo $lib | tr '[a-z]' '[A-Z]')
112+
printf "STATIC_${uclib}_PLUGINS="
122113
plugins="${plugins} __${uclib}"
123114
fi
124-
printf "p/${plg}.mk "
115+
printf " p/${plg}.mk"
125116
done
126117

127118
echo
128119

129-
# fill the holes with love
130120
for a in ${SHARED} ; do
131121
lib=$(echo $a | cut -d . -f 1) # library
132-
if type perl > /dev/null 2>&1 ; then
133-
uclib=$(echo $lib | perl -pe 'tr/[a-z]/[A-Z]/')
134-
else
135-
uclib=$(echo $lib | tr '[a-z]' '[A-Z]')
136-
fi
137-
if [ -z "`echo ${plugins} | grep __${uclib}`" ]; then
138-
plugins="${plugins} __${uclib}"
139-
echo "STATIC_${uclib}_PLUGINS="
122+
plg=$(echo $a | cut -d . -f 2) # plugin name
123+
uclib=$(echo $lib | tr '[a-z]' '[A-Z]')
124+
if [ -z "`echo ${splugins} | grep __${uclib}`" ]; then
125+
splugins="${splugins} __${uclib}"
126+
printf "SHARED_${uclib}_TARGETS="
140127
fi
128+
printf " p/io_${plg}.${EXT}"
141129
done
130+
echo
142131
}
143132

144133
generate () {
@@ -167,7 +156,6 @@ sub () {
167156
n="" ; for a in $1 ; do [ $a = $2 ] && continue ; n="$n $a" ; done ; echo $n
168157
}
169158

170-
171159
echo | sort -t. > /dev/null 2>&1
172160
if [ $? = 0 ]; then
173161
SORT="sort -t."
@@ -197,11 +185,23 @@ make_shared () {
197185

198186
make_ () { : ; }
199187

200-
201188
MODE=""
202189
DONOTHING=0
203190
DEFCFG=dist/plugins-cfg/plugins.def.cfg
204191

192+
check_conflicts () {
193+
CONFLICT=0
194+
for a in $STATIC ; do
195+
for b in $SHARED ; do
196+
if [ "$a" = "$b" ]; then
197+
echo "\x1b[1mError\x1b[0m: Conflict \x1b[44m$a\x1b[0m is defined as STATIC and SHARED"
198+
CONFLICT=1
199+
fi
200+
done
201+
done
202+
return $CONFLICT
203+
}
204+
205205
rmstatic() {
206206
C=0
207207
if [ -z "$1" ]; then
@@ -255,6 +255,8 @@ if [ - != "${RMSTATIC}" ]; then
255255
exit 0
256256
fi
257257

258+
check_conflicts || exit 1
259+
258260
[ ${DONOTHING} = 0 ] && generate
259261

260262
echo SHARED: ${SHARED}

dist/plugins-cfg/plugins.bin.cfg

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
STATIC="
2-
io.malloc
32
io.default
43
bin.any
54
bin.elf

dist/plugins-cfg/plugins.def.cfg

-1
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,6 @@ io.procpid
257257
io.ptrace
258258
io.rap
259259
io.self
260-
io.shm
261260
io.w32
262261
io.w32dbg
263262
io.winkd

dist/plugins-cfg/plugins.emscripten.cfg

-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ bp.mips
3232
cmd.dummy
3333
egg.exec
3434
egg.xor
35-
io.debug
3635
io.malloc
3736
io.sparse
3837
io.default

dist/plugins-cfg/plugins.mingw.cfg

+1-2
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,6 @@ io.procpid
247247
io.ptrace
248248
io.rap
249249
io.self
250-
io.shm
251250
io.w32
252251
io.w32dbg
253252
io.winedbg
@@ -281,4 +280,4 @@ parse.wasm_pseudo
281280
parse.avr_pseudo
282281
parse.x86_pseudo
283282
parse.z80_pseudo"
284-
SHARED="io.shm"
283+
SHARED=""

dist/plugins-cfg/plugins.nocs.cfg

-1
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,6 @@ io.procpid
224224
io.ptrace
225225
io.rap
226226
io.self
227-
io.shm
228227
io.w32
229228
io.w32dbg
230229
io.winkd

dist/plugins-cfg/plugins.nogpl.cfg

-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ io.procpid
106106
io.ptrace
107107
io.rap
108108
io.self
109-
io.shm
110109
io.w32
111110
io.w32dbg
112111
io.winkd

dist/plugins-cfg/plugins.static.cfg

-1
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,6 @@ io.procpid
198198
io.ptrace
199199
io.rap
200200
io.self
201-
io.shm
202201
io.w32
203202
io.w32dbg
204203
io.winkd

dist/plugins-cfg/plugins.termux.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -254,4 +254,4 @@ parse.wasm_pseudo
254254
parse.avr_pseudo
255255
parse.x86_pseudo
256256
parse.z80_pseudo"
257-
SHARED="io.shm"
257+
SHARED=""

dist/plugins-cfg/plugins.wasi.cfg

-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ io.default
5757
parse.arm_pseudo
5858
parse.att2intel
5959
parse.wasm_pseudo
60-
parse.6502_pseudo
6160
parse.z80_pseudo
6261
"
6362
SHARED="

libr/io/Makefile

+5-2
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,12 @@ ifeq (${BUILD_OS},dragonfly)
2727
LDFLAGS+=-lkvm
2828
endif
2929

30-
.PHONY: pre
30+
.PHONY: pre pos
3131
pre: libr_io.${EXT_SO} libr_io.${EXT_AR}
32-
@${MAKE} -C p
32+
@$(MAKE) -C p
33+
$(MAKE) pos
34+
35+
pos: $(SHARED_IO_TARGETS)
3336

3437
include ${STATIC_IO_PLUGINS}
3538
include $(LTOP)/rules.mk

libr/io/p/shm.mk

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
N=shm
12
OBJ_SHM=io_shm.o
3+
CSRC_SHM=$(subst .o,.c,$(OBJ_SHM))
24

35
STATIC_OBJ+=${OBJ_SHM}
46
TARGET_SHM=io_shm.${EXT_SO}
5-
ALL_TARGETS+=${TARGET_SHM}
7+
#ALL_TARGETS+=${TARGET_SHM}
68

7-
# only for shm_open
89
ifeq (${OSTYPE},gnulinux)
910
LDFLAGS+=-lrt
1011
endif
@@ -17,6 +18,5 @@ LINKFLAGS+=-L../../util -lr_util
1718
LINKFLAGS+=-L.. -lr_io
1819
endif
1920

20-
${TARGET_SHM}: ${OBJ_SHM}
21-
${CC_LIB} $(call libname,io_shm) ${CFLAGS} $(LDFLAGS) \
22-
-o ${TARGET_SHM} ${OBJ_SHM} ${LINKFLAGS}
21+
$(N) p/${TARGET_SHM}: p/${OBJ_SHM}
22+
cd p && $(CC) $(CFLAGS) -shared -L.. $(CSRC_SHM) -fPIC -o $(TARGET_SHM) -I../../include -I../../../shlr/sdb/src $(LINKFLAGS)

mk/gcc.mk

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ LDFLAGS_LIB=${LDFLAGS} -shared
3333
#endif
3434
LDFLAGS_SONAME=-Wl,-soname=
3535
endif
36+
LDFLAGS_LIB+=-fPIC
3637
# XXX
3738
#LDFLAGS_SONAME=-D_
3839

0 commit comments

Comments
 (0)