Skip to content

Commit 12176ca

Browse files
committed
Fix a possible NPE in Darwin build + rebuild some binaries
1 parent f221b36 commit 12176ca

9 files changed

Lines changed: 26 additions & 17 deletions

File tree

BuildNative

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ function build_libraries() {
129129
local DYNCALL_CONFIGURE_ARGS=""
130130
if [[ "$ARCH" != "$NATIVE_ARCH" ]]; then
131131
DYNCALL_CONFIGURE_ARGS="--target-$ARCH"
132-
fi
132+
fi
133133
sh ./configure $DYNCALL_CONFIGURE_ARGS
134134
$MAKE_CMD $@ || failed "Failed building dyncall"
135135

@@ -171,5 +171,9 @@ if [[ $OS =~ sunos ]]; then
171171
ARCH=x86 build_libraries $@
172172
ARCH=x64 build_libraries $@
173173
else
174+
if [[ $OS =~ darwin ]]; then
175+
export AS=llvm-as
176+
export CC=llvm-gcc
177+
fi
174178
build_libraries $@
175179
fi
-2.62 KB
Binary file not shown.
-1.8 KB
Binary file not shown.
-1.45 KB
Binary file not shown.

src/main/cpp/bridj/Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ CPPFLAGS += -mtune=generic
3232
endif
3333

3434
ifeq ($(OS), darwin)
35-
CPPFLAGS += -no-integrated-as
35+
# CPPFLAGS += -no-integrated-as
3636
CPPFLAGS += -D_DARWIN_C_SOURCE
3737
CPPFLAGS += -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers/
3838
CPPFLAGS += -mmacosx-version-min=10.4
@@ -49,6 +49,9 @@ endif
4949
CPPFLAGS += -U_FORTIFY_SOURCE
5050
#CPPFLAGS += -Werror
5151
CPPFLAGS += -std=c99
52+
ifeq ($(OS), darwin)
53+
CPPFLAGS += -stdlib=libstdc++
54+
endif
5255

5356
ifeq ($(ARCH), x64)
5457
UNITS += GLIBCCompatibilityWraps

src/main/cpp/bridj/dyncall.diff

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
diff -r 3e629dc19168 dynload/dynload_syms_mach-o.c
2-
--- a/dynload/dynload_syms_mach-o.c Thu Mar 19 22:24:28 2015 +0100
3-
+++ b/dynload/dynload_syms_mach-o.c Sat Mar 21 11:08:07 2015 +0000
1+
diff -r bbefb8b8e74c dynload/dynload_syms_mach-o.c
2+
--- a/dynload/dynload_syms_mach-o.c Thu Nov 24 23:47:31 2016 +0000
3+
+++ b/dynload/dynload_syms_mach-o.c Sun Dec 25 20:36:56 2016 +0100
44
@@ -29,6 +29,7 @@
55
dynamic symbol resolver for Mach-O
66

@@ -167,7 +167,7 @@ diff -r 3e629dc19168 dynload/dynload_syms_mach-o.c
167167

168168
DLSyms* dlSymsInit(const char* libPath)
169169
{
170-
@@ -71,27 +201,59 @@
170+
@@ -71,27 +201,61 @@
171171
for (iImage = 0, nImages = _dyld_image_count(); iImage < nImages; iImage++)
172172
{
173173
const char* name = _dyld_get_image_name(iImage);
@@ -197,6 +197,8 @@ diff -r 3e629dc19168 dynload/dynload_syms_mach-o.c
197197
{
198198
- if (cmd->cmd == LC_SYMTAB)
199199
- {
200+
+ if (!cmd) continue;
201+
+
200202
+ if (cmd->cmd == LC_DYLD_INFO_ONLY || cmd->cmd == LC_DYLD_INFO) {
201203
+ const struct dyld_info_command* dcmd = (const struct dyld_info_command*)cmd;
202204
+ const unsigned char* trie = (pBase + dcmd->export_off);
@@ -233,15 +235,15 @@ diff -r 3e629dc19168 dynload/dynload_syms_mach-o.c
233235
pSyms->symbolCount = scmd->nsyms;
234236
pSyms->pStringTable = pBase + scmd->stroff;
235237
pSyms->pSymbolTable = (struct NLIST_TYPE*)(pBase + scmd->symoff);
236-
@@ -101,7 +263,6 @@
238+
@@ -101,7 +265,6 @@
237239
cmd = (const struct load_command*)(((char*)cmd) + cmd->cmdsize);
238240
}
239241
}
240242
- break;
241243
}
242244
}
243245
return NULL;
244-
@@ -113,6 +274,18 @@
246+
@@ -113,6 +276,18 @@
245247
if (!pSyms)
246248
return;
247249

@@ -260,7 +262,7 @@ diff -r 3e629dc19168 dynload/dynload_syms_mach-o.c
260262
dlFreeMem(pSyms);
261263
}
262264

263-
@@ -133,6 +306,11 @@
265+
@@ -133,6 +308,11 @@
264266
if (nl->n_un.n_strx <= 1)
265267
return NULL; // would be empty string anyway
266268

@@ -272,7 +274,7 @@ diff -r 3e629dc19168 dynload/dynload_syms_mach-o.c
272274
//TODO skip more symbols based on nl->n_desc and nl->n_type ?
273275
return nl;
274276
}
275-
@@ -140,6 +318,12 @@
277+
@@ -140,6 +320,12 @@
276278

277279
const char* dlSymsName(DLSyms* pSyms, int index)
278280
{
@@ -285,7 +287,7 @@ diff -r 3e629dc19168 dynload/dynload_syms_mach-o.c
285287
const struct NLIST_TYPE* nl = get_nlist(pSyms, index);
286288
if (!nl)
287289
return NULL;
288-
@@ -150,6 +334,12 @@
290+
@@ -150,6 +336,12 @@
289291

290292
void* dlSymsValue(DLSyms* pSyms, int index)
291293
{
@@ -298,9 +300,9 @@ diff -r 3e629dc19168 dynload/dynload_syms_mach-o.c
298300
const struct NLIST_TYPE* nl = get_nlist(pSyms, index);
299301
if (!nl)
300302
return NULL;
301-
diff -r 3e629dc19168 dynload/dynload_unix.c
302-
--- a/dynload/dynload_unix.c Thu Mar 19 22:24:28 2015 +0100
303-
+++ b/dynload/dynload_unix.c Sat Mar 21 11:08:07 2015 +0000
303+
diff -r bbefb8b8e74c dynload/dynload_unix.c
304+
--- a/dynload/dynload_unix.c Thu Nov 24 23:47:31 2016 +0000
305+
+++ b/dynload/dynload_unix.c Sun Dec 25 20:36:56 2016 +0100
304306
@@ -41,7 +41,7 @@
305307

306308
DLLib* dlLoadLibrary(const char* libPath)
@@ -310,9 +312,9 @@ diff -r 3e629dc19168 dynload/dynload_unix.c
310312
}
311313

312314

313-
diff -r 3e629dc19168 dynload/dynload_windows.c
314-
--- a/dynload/dynload_windows.c Thu Mar 19 22:24:28 2015 +0100
315-
+++ b/dynload/dynload_windows.c Sat Mar 21 11:08:07 2015 +0000
315+
diff -r bbefb8b8e74c dynload/dynload_windows.c
316+
--- a/dynload/dynload_windows.c Thu Nov 24 23:47:31 2016 +0000
317+
+++ b/dynload/dynload_windows.c Sun Dec 25 20:36:56 2016 +0100
316318
@@ -41,7 +41,9 @@
317319
DLLib* dlLoadLibrary(const char* libPath)
318320
{
-3.36 KB
Binary file not shown.
Binary file not shown.
5.57 KB
Binary file not shown.

0 commit comments

Comments
 (0)