Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign upSupport IBM AIX on POWER #6677
Conversation
NattyNarwhal
added some commits
Jan 20, 2018
NattyNarwhal
requested review from
BrzVlad,
kumpera,
lewurm,
luhenry,
marek-safar and
vargaz
as
code owners
Jan 25, 2018
mono/utils/mono-mmap.c
| @@ -351,7 +351,8 @@ mono_mprotect (void *addr, size_t length, int flags) | ||
| memset (addr, 0, length); | ||
| #else | ||
| memset (addr, 0, length); | ||
| #ifdef HAVE_MADVISE | ||
| /* AIX doesn't have MADV_FREE */ | ||
| #if defined(HAVE_MADVISE) && !defined(_AIX) |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Jan 25, 2018
Contributor
We do have that function, but AIX doesn't support the MADV_FREE flag.
NattyNarwhal
Jan 25, 2018
Contributor
We do have that function, but AIX doesn't support the MADV_FREE flag.
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
jaykrell
Jan 27, 2018
Member
is it a define (or enum or const int) on all/most systems? i.e. can you ifdef the flag?
jaykrell
Jan 27, 2018
Member
is it a define (or enum or const int) on all/most systems? i.e. can you ifdef the flag?
mono/utils/mono-proclib.c
| defined, so undef */ | ||
| #if defined(_AIX) && defined(_ALL_SOURCE) | ||
| #undef hz | ||
| #endif |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
| LDFLAGS="${LDFLAGS} -Wl,-export-dynamic" | ||
| # GNU specific option, this confuses IBM ld, but do offer alternatives when possible | ||
| if test $lt_cv_prog_gnu_ld = yes; then | ||
| LDFLAGS="${LDFLAGS} -Wl,-export-dynamic" |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Jan 25, 2018
Contributor
I wasn't sure if LLVM's linker supports it; has Apple moved to that yet? AFAIK, they're still using GNU binutils even with clang. In any case, this could be extended to check for LLVM's linker and use the proper flag (maybe the same as GNU's) or any other non-GNU linker, really.
NattyNarwhal
Jan 25, 2018
Contributor
I wasn't sure if LLVM's linker supports it; has Apple moved to that yet? AFAIK, they're still using GNU binutils even with clang. In any case, this could be extended to check for LLVM's linker and use the proper flag (maybe the same as GNU's) or any other non-GNU linker, really.
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
jaykrell
Jan 27, 2018
Member
I believe Apple has a very old GNU binutils fork, forked in Next days. There is lld but I don't think they use it.
jaykrell
Jan 27, 2018
Member
I believe Apple has a very old GNU binutils fork, forked in Next days. There is lld but I don't think they use it.
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
eschaton
Jan 27, 2018
Apple doesn’t currently use either lld or GNU binutils for its linker. Apple’s linker is its own Open Source ld64.
eschaton
Jan 27, 2018
Apple doesn’t currently use either lld or GNU binutils for its linker. Apple’s linker is its own Open Source ld64.
mono/mini/mini-exceptions.c
| @@ -2396,12 +2396,15 @@ mono_setup_altstack (MonoJitTlsData *tls) | ||
| g_assert ((guint8*)&sa >= (guint8*)tls->stack_ovf_guard_base + tls->stack_ovf_guard_size); | ||
| /* the valloc call here seems problematic on AIX */ | ||
| #if !defined(_AIX) |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
lewurm
Jan 25, 2018
Member
ifdefing this part out, makes this code broken and useless. instead we should rather not set MONO_ARCH_SIGSEGV_ON_ALTSTACK in mini-ppc.h.
lewurm
Jan 25, 2018
Member
ifdefing this part out, makes this code broken and useless. instead we should rather not set MONO_ARCH_SIGSEGV_ON_ALTSTACK in mini-ppc.h.
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
lewurm
Jan 25, 2018
Member
cool, thanks for your contribution!
a couple things:
- I recommend to
--disable-boehm, and concentrate to getsgenworking as it is our default GC. - we sort of care about ppc64le on Linux, so we shouldn't break it further (and in general, we shouldn't break any other platform
😉 ) - what's PASE?
- what's the difference between
aixandos400? - do you have a link handy describing the ABI on AIX?
|
cool, thanks for your contribution! a couple things:
|
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
build |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
@monojenkins build Linux PPC64 little endian |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Jan 25, 2018
Contributor
-
I'll consider disabling Boehm. It's horrific in there anyways, last time I was debugging it. SGen is what I'm testing with, however.
-
This should be doable with #ifdefs, probably. After all, Mono still supports (supported?) big endian PPC.
-
PASE is basically like Windows Subsystem for Linux, but for IBM i; a minicomputer operating system still in active sale, development, and support. (Basically, instead of NT emulating Linux syscalls, imagine i emulating AIX syscalls; all with their respective userlands.)
-
Autotools identifies PASE as OS400, the uname system name value for PASE. This does affect build parameters, as PASE is subtly different when building. (Autotools thinks
powerpc-ibm-os400doesn't support shared libraries at all, for example, when it does, and PASE lacks/dev/random.) -
The IBM assembler manual, but I didn't find it describe much related to what's needed, and it's somewhat cryptic at times; at least for me, who's never worked with any assembler, let alone POWER assembler before. It's definitely not the SVR4 conventions 32-bit Linux uses though. (For example, from reading v8 JIT code, I'm pretty sure 32-bit AIX uses function descriptors, and it uses r2, the TOC register more, but I could be misreading...)
|
NattyNarwhal
added some commits
Jan 25, 2018
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
Suggested actionable changes done. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
build |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
@monojenkins build Linux PPC64 little endian |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
edelsohn
Feb 1, 2018
GCC TLS support is relatively recent, but nothing like this error has been reported. I really would need to see the context of the .tc statement.
It may be, again, that ELF files allows some ordering of pseudo-ops produced by __thread declarations that causes heartburn on AIX XCOFF. I even can imagine that the -fno-toplevel-reorder option may have an effect.
edelsohn
commented
Feb 1, 2018
|
GCC TLS support is relatively recent, but nothing like this error has been reported. I really would need to see the context of the .tc statement. It may be, again, that ELF files allows some ordering of pseudo-ops produced by __thread declarations that causes heartburn on AIX XCOFF. I even can imagine that the -fno-toplevel-reorder option may have an effect. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Feb 1, 2018
Contributor
Yeah, compiling with pthread TLS seems to get past the error. I'll have to consider trying that flag with gcc when using __thread.
Here's the assembler output for the file: http://ix.io/F3p
|
Yeah, compiling with pthread TLS seems to get past the error. I'll have to consider trying that flag with gcc when using __thread. Here's the assembler output for the file: http://ix.io/F3p |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
edelsohn
Feb 1, 2018
The linked assembler file cannot be equivalent to the assembler file that caused the error. Was it produced with the exact same command line options and -S instead of -c? The error message is
/tmp//cccA97Dc.s: line 4010: 1252-018 Use a .tc inside a .toc scope only.
and there is no ".tc" pseudo-op at line 4010.
The error also may be related to the use of -mminimal-toc, which I sort of remember seeing in one set of options. One no longer should use -mminimal-toc. -mcmodel=large is the better approach now.
edelsohn
commented
Feb 1, 2018
|
The linked assembler file cannot be equivalent to the assembler file that caused the error. Was it produced with the exact same command line options and -S instead of -c? The error message is /tmp//cccA97Dc.s: line 4010: 1252-018 Use a .tc inside a .toc scope only. and there is no ".tc" pseudo-op at line 4010. The error also may be related to the use of -mminimal-toc, which I sort of remember seeing in one set of options. One no longer should use -mminimal-toc. -mcmodel=large is the better approach now. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Feb 1, 2018
Contributor
I had reran autogen and did a clean rebuild before making that assembler file, so the error is on line 3994.
/tmp//ccMbcykn.s: line 3994: 1252-018 Use a .tc inside a .toc scope only. Precede the .tc statements with a .toc
statement.
|
I had reran autogen and did a clean rebuild before making that assembler file, so the error is on line 3994.
|
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
edelsohn
Feb 1, 2018
Try removing -mminimal-toc. If Mono really is overflowing the TOC, use -mcmodel=large.
edelsohn
commented
Feb 1, 2018
|
Try removing -mminimal-toc. If Mono really is overflowing the TOC, use -mcmodel=large. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Feb 1, 2018
Contributor
Doing another run: replacing minimal-toc with mcmodel=large in configure.ac seems to work for compiling so far.
|
Doing another run: replacing minimal-toc with mcmodel=large in configure.ac seems to work for compiling so far. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Feb 1, 2018
Contributor
I had left my session away, and came back to find:
CCLD libmonosgen-2.0.la
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-object.o], section 1
The relocation type of the RLD for address 0x3d22 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-object.o], section 1
The relocation type of the RLD for address 0x8c6a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-image.o], section 1
The relocation type of the RLD for address 0x24ba is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-image.o], section 1
The relocation type of the RLD for address 0x24c6 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-class.o], section 1
The relocation type of the RLD for address 0x3b62 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-class.o], section 1
The relocation type of the RLD for address 0x3b6a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-class.o], section 1
The relocation type of the RLD for address 0x92ca is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-class.o], section 1
The relocation type of the RLD for address 0x12222 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-class.o], section 1
The relocation type of the RLD for address 0x124ca is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-class.o], section 1
The relocation type of the RLD for address 0x14aba is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-class.o], section 1
The relocation type of the RLD for address 0x14b2a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-loader.o], section 1
The relocation type of the RLD for address 0x22d6 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-loader.o], section 1
The relocation type of the RLD for address 0x22de is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-loader.o], section 1
The relocation type of the RLD for address 0x2fb2 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-loader.o], section 1
The relocation type of the RLD for address 0x2fba is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-loader.o], section 1
The relocation type of the RLD for address 0x2fd6 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-loader.o], section 1
The relocation type of the RLD for address 0x2fde is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-metadata-verify.o], section 1
The relocation type of the RLD for address 0xd8c2 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_free
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-metadata-verify.o], section 1
The relocation type of the RLD for address 0xd9aa is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_free
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x672a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_thread_force_interruption_checkpoint_noraise
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x94de is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_metadata_signature_equal
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x94ee is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_signature_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x955a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x9a22 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_signature_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x9a26 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_metadata_signature_equal
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x9faa is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0xa04a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_metadata_signature_equal
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0xa056 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_signature_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0xa9b6 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0xaa3e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0xab46 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_signature_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0xb47a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_thread_force_interruption_checkpoint_noraise
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0xb7d2 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_signature_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0xbc5e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0xc68a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0xc75e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0xd2a6 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0xe3a2 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x11dfa is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_free
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x1b55e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_threads_enter_gc_safe_region_unbalanced
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x1b61a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_threads_exit_gc_safe_region_unbalanced
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x1b93a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x1cb96 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x1d95e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_gchandle_get_target
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x1dc66 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_gchandle_new
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x1df7a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_threads_attach_coop
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x1e00a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_threads_detach_coop
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x1e226 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-marshal.o], section 1
The relocation type of the RLD for address 0x1f7c6 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-cominterop.o], section 1
The relocation type of the RLD for address 0x4972 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-cominterop.o], section 1
The relocation type of the RLD for address 0x6072 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-cominterop.o], section 1
The relocation type of the RLD for address 0x691a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-cominterop.o], section 1
The relocation type of the RLD for address 0x8fae is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-sre.o], section 1
The relocation type of the RLD for address 0x27ea is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is reflected_equal
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-sre.o], section 1
The relocation type of the RLD for address 0x27f6 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is reflected_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-icall.o], section 1
The relocation type of the RLD for address 0x5dfe is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is strcmp
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-icall.o], section 1
The relocation type of the RLD for address 0x604e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_ascii_strcasecmp
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-icall.o], section 1
The relocation type of the RLD for address 0x1196e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is strcmp
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-icall.o], section 1
The relocation type of the RLD for address 0x11c4e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_ascii_strcasecmp
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-icall.o], section 1
The relocation type of the RLD for address 0x190be is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is strcmp
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-icall.o], section 1
The relocation type of the RLD for address 0x19186 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_ascii_strcasecmp
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-icall.o], section 1
The relocation type of the RLD for address 0x1acaa is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_free
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-icall.o], section 1
The relocation type of the RLD for address 0x1acb2 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-icall.o], section 1
The relocation type of the RLD for address 0x1acba is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-remoting.o], section 1
The relocation type of the RLD for address 0x1d7e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-remoting.o], section 1
The relocation type of the RLD for address 0x3e96 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_free
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-remoting.o], section 1
The relocation type of the RLD for address 0x3e9a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-remoting.o], section 1
The relocation type of the RLD for address 0x3f52 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_free
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-remoting.o], section 1
The relocation type of the RLD for address 0x3f56 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-remoting.o], section 1
The relocation type of the RLD for address 0x45f6 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_free
ld: 0711-784 SEVERE ERROR: Object ../../mono/metadata/.libs/libmonoruntimesgen.a[libmonoruntimesgen_la-remoting.o], section 1
The relocation type of the RLD for address 0x45fa is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-mini-ppc.o], section 1
The relocation type of the RLD for address 0x7b56 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_ppc_throw_exception
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-method-to-ir.o], section 1
The relocation type of the RLD for address 0x55b2 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_fill_class_rgctx
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-method-to-ir.o], section 1
The relocation type of the RLD for address 0x572a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_fill_method_rgctx
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-method-to-ir.o], section 1
The relocation type of the RLD for address 0x9a46 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_fill_class_rgctx
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-method-to-ir.o], section 1
The relocation type of the RLD for address 0x9a8a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_fill_method_rgctx
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-method-to-ir.o], section 1
The relocation type of the RLD for address 0x229da is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is ves_icall_object_new
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-mini-generic-sharing.o], section 1
The relocation type of the RLD for address 0x23ba is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-mini-generic-sharing.o], section 1
The relocation type of the RLD for address 0x248e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-mini-generic-sharing.o], section 1
The relocation type of the RLD for address 0x3c1a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_metadata_signature_equal
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-mini-generic-sharing.o], section 1
The relocation type of the RLD for address 0x3c1e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_signature_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-mini-generic-sharing.o], section 1
The relocation type of the RLD for address 0x44fa is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_metadata_signature_equal
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-mini-generic-sharing.o], section 1
The relocation type of the RLD for address 0x44fe is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_signature_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-aot-runtime.o], section 1
The relocation type of the RLD for address 0xacea is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-aot-runtime.o], section 1
The relocation type of the RLD for address 0xacee is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-aot-runtime.o], section 1
The relocation type of the RLD for address 0xad3e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-aot-runtime.o], section 1
The relocation type of the RLD for address 0xad42 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-aot-runtime.o], section 1
The relocation type of the RLD for address 0xed1a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-aot-runtime.o], section 1
The relocation type of the RLD for address 0xed22 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-debugger-agent.o], section 1
The relocation type of the RLD for address 0x6ed2 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-debugger-agent.o], section 1
The relocation type of the RLD for address 0x16356 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-debugger-agent.o], section 1
The relocation type of the RLD for address 0x1635a is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-debugger-agent.o], section 1
The relocation type of the RLD for address 0x1692e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-debugger-agent.o], section 1
The relocation type of the RLD for address 0x16936 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-debugger-agent.o], section 1
The relocation type of the RLD for address 0x1b2fe is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_aligned_addr_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-aot-compiler.o], section 1
The relocation type of the RLD for address 0x8fba is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_patch_info_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-aot-compiler.o], section 1
The relocation type of the RLD for address 0x8fbe is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is mono_patch_info_equal
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-aot-compiler.o], section 1
The relocation type of the RLD for address 0x138e6 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-aot-compiler.o], section 1
The relocation type of the RLD for address 0x138ea is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-aot-compiler.o], section 1
The relocation type of the RLD for address 0x199da is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-aot-compiler.o], section 1
The relocation type of the RLD for address 0x199de is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-dwarfwriter.o], section 1
The relocation type of the RLD for address 0x2436 is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_equal
ld: 0711-784 SEVERE ERROR: Object ./.libs/libmini.a[libmini_la-dwarfwriter.o], section 1
The relocation type of the RLD for address 0x243e is R_TOCL,
but the instruction does not address the first byte of the
referenced symbol.
The referenced symbol is monoeg_g_str_hash
collect2: error: ld returned 12 exit status
gmake[4]: *** [Makefile:1534: libmonosgen-2.0.la] Error 1
Looks like IBM ld can't handle mcmodel=large....?
|
I had left my session away, and came back to find:
Looks like IBM ld can't handle mcmodel=large....? |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
edelsohn
Feb 1, 2018
This isn't directly mcmodel=large. Are you certain that you started from a clean build?
Mono is doing some weird things. I'm not certain how it's trying to convince GCC to reference the middle of a symbol. Based on the names of the symbols eliciting the error and the error itself, I suspect that Mono is doing some "creative" and maybe not so safe things with pointers.
Also try adding -fno-section-anchors.
edelsohn
commented
Feb 1, 2018
•
|
This isn't directly mcmodel=large. Are you certain that you started from a clean build? Mono is doing some weird things. I'm not certain how it's trying to convince GCC to reference the middle of a symbol. Based on the names of the symbols eliciting the error and the error itself, I suspect that Mono is doing some "creative" and maybe not so safe things with pointers. Also try adding -fno-section-anchors. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Feb 1, 2018
Contributor
Nope, substituting minimal-toc for -mcmodel=large -fno-toplevel-reorder -fno-section-anchors didn't change; we still get that error.
I may just switch to pthread TLS, as that was working last time.
|
Nope, substituting minimal-toc for I may just switch to pthread TLS, as that was working last time. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Feb 1, 2018
Contributor
So, now we deal with (what I'm pretty sure is) gacutil trying to use a Linux name for libc on make install:
gmake[6]: Entering directory '/opt/monodev/mono/mcs/class/Mono.Security'
gmake install-local
gmake[7]: Entering directory '/opt/monodev/mono/mcs/class/Mono.Security'
MONO_PATH="./../../class/lib/build:$MONO_PATH" /opt/monodev/mono/runtime/mono-wrapper ./../../class/lib/build/gacutil.exe /i ./../../class/lib/net_4_x-linux/Mono.Security.dll /f /root /opt/mono/lib /package 4.5
mono_thread_internal_set_priority: pthread_setschedparam failed, error: "Operation not permitted." (1)
Unhandled Exception:
System.DllNotFoundException: libc.so.6
at (wrapper managed-to-native) Mono.Tools.Driver.symlink(string,string)
at Mono.Tools.Driver.Install (System.Boolean check_refs, System.String name, System.String package, System.String gacdir, System.String link_gacdir, System.String libdir, System.String link_libdir) [0x0044d] in <b9fdaaf84b0749df8259fff5d7c8f048>:0
at Mono.Tools.Driver.Main (System.String[] args) [0x00394] in <b9fdaaf84b0749df8259fff5d7c8f048>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.DllNotFoundException: libc.so.6
at (wrapper managed-to-native) Mono.Tools.Driver.symlink(string,string)
at Mono.Tools.Driver.Install (System.Boolean check_refs, System.String name, System.String package, System.String gacdir, System.String link_gacdir, System.String libdir, System.String link_libdir) [0x0044d] in <b9fdaaf84b0749df8259fff5d7c8f048>:0
at Mono.Tools.Driver.Main (System.String[] args) [0x00394] in <b9fdaaf84b0749df8259fff5d7c8f048>:0
gmake[7]: *** [../../build/library.make:204: install-local] Error 1
gmake[7]: Leaving directory '/opt/monodev/mono/mcs/class/Mono.Security'
gmake[6]: *** [../../build/rules.make:211: do-install] Error 2
gmake[6]: Leaving directory '/opt/monodev/mono/mcs/class/Mono.Security'
gmake[5]: *** [../build/rules.make:232: install-recursive] Error 1
gmake[5]: Leaving directory '/opt/monodev/mono/mcs/class'
gmake[4]: *** [build/rules.make:232: install-recursive] Error 1
gmake[4]: Leaving directory '/opt/monodev/mono/mcs'
gmake[3]: *** [Makefile:54: profile-do--net_4_x--install] Error 2
gmake[3]: Leaving directory '/opt/monodev/mono/mcs'
gmake[2]: *** [Makefile:50: profiles-do--install] Error 2
gmake[2]: Leaving directory '/opt/monodev/mono/mcs'
gmake[1]: *** [Makefile:620: install-exec] Error 2
gmake[1]: Leaving directory '/opt/monodev/mono/runtime'
gmake: *** [Makefile:558: install-recursive] Error 1
|
So, now we deal with (what I'm pretty sure is) gacutil trying to use a Linux name for libc on make install:
|
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Feb 2, 2018
Contributor
I'd say this PR is ready to merge. To recap: dynamic linking works, we can call into AIX's weird library style with dlopen, which gets gacutil working, which in turn, makes it possible to make install.
|
I'd say this PR is ready to merge. To recap: dynamic linking works, we can call into AIX's weird library style with dlopen, which gets gacutil working, which in turn, makes it possible to make install. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Feb 2, 2018
Contributor
That being said, I still have some minor things to investigate, but those can be put aside and effort spent on getting this merged.
|
That being said, I still have some minor things to investigate, but those can be put aside and effort spent on getting this merged. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Feb 2, 2018
Contributor
Still mergeable, just leaving this up for future reference to debug a DNS issue in Mono:
$ cat testdns.cs
using System;
using System.Net;
class ResolveDNS {
public static void Main(string[] args) {
Console.WriteLine(Dns.GetHostByName(args[0]));
}
}
$ /opt/mono/bin/mono --trace=T:System.Net.Dns testdns.exe github.com
mono_thread_internal_set_priority: pthread_setschedparam failed, error: "Operation not permitted." (1)
[1: 0.00000 0] ENTER: System.Net.Dns:.cctor ()() ip: 7000000000848f4
[1: 0.00202 0] LEAVE: System.Net.Dns:.cctor ()
[1: 0.00207 0] ENTER: System.Net.Dns:GetHostByName (string)() ip: 700000000084088
[1:] EXCEPTION handling: System.EntryPointNotFoundException: getifaddrs
[1:] EXCEPTION handling: System.EntryPointNotFoundException: getifaddrs
[1: 0.04000 1] ENTER: (wrapper managed-to-native) System.Net.Dns:GetHostByName_internal (string,string&,string[]&,string[]&,int)() ip: 700000000084450
[1: 0.05283 1] LEAVE: (wrapper managed-to-native) System.Net.Dns:GetHostByName_internal (string,string&,string[]&,string[]&,int)result=1
[1: 0.05404 1] ENTER: System.Net.Dns:hostent_to_IPHostEntry (string,string,string[],string[])() ip: 7000000000844c0
[1: 0.05879 2] ENTER: System.Net.Dns:Error_11001 (string)() ip: 7000000003d4a50
[1:] EXCEPTION handling: System.Net.Sockets.SocketException: Could not resolve host 'github.com'
Unhandled Exception:
System.Net.Sockets.SocketException (0x80004005): Could not resolve host 'github.com'
at System.Net.Dns.Error_11001 (System.String hostName) [0x00015] in <d46682f7e6dd42a89e5b7c900df1adad>:0
at System.Net.Dns.hostent_to_IPHostEntry (System.String originalHostName, System.String h_name, System.String[] h_aliases, System.String[] h_addrlist) [0x00082] in <d46682f7e6dd42a89e5b7c900df1adad>:0
at System.Net.Dns.GetHostByName (System.String hostName) [0x0002f] in <d46682f7e6dd42a89e5b7c900df1adad>:0
at ResolveDNS.Main (System.String[] args) [0x00013] in <a0fb5c27bef04bc09d46e68d134f0f47>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.Net.Sockets.SocketException (0x80004005): Could not resolve host 'github.com'
at System.Net.Dns.Error_11001 (System.String hostName) [0x00015] in <d46682f7e6dd42a89e5b7c900df1adad>:0
at System.Net.Dns.hostent_to_IPHostEntry (System.String originalHostName, System.String h_name, System.String[] h_aliases, System.String[] h_addrlist) [0x00082] in <d46682f7e6dd42a89e5b7c900df1adad>:0
at System.Net.Dns.GetHostByName (System.String hostName) [0x0002f] in <d46682f7e6dd42a89e5b7c900df1adad>:0
at ResolveDNS.Main (System.String[] args) [0x00013] in <a0fb5c27bef04bc09d46e68d134f0f47>:0
(updated test case)
|
Still mergeable, just leaving this up for future reference to debug a DNS issue in Mono:
(updated test case) |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
edelsohn
Feb 2, 2018
Congratulations! Glad that Mono now is working on AIX. That's a big accomplishment!
-Wl,-b64 should not be necessary in CPPFLAGS and LDFLAGS because GCC -maix64 implies that already when it invokes the linker.
export OBJECT_MODE=64 should not be necessary with -X64. And hidden, magic, global variables are bad.
libintl.a(libintl.so.9) probably will come back to bit you because different library versionings are floaing around. libintl.so.1, which is 1.0, and libintl.so.9, which is 0.9 and libintl.so.8, which is 0.8.
-Wl,-bexpall should be useless because the explicit export list created by libtool overrides it.
edelsohn
commented
Feb 2, 2018
|
Congratulations! Glad that Mono now is working on AIX. That's a big accomplishment! -Wl,-b64 should not be necessary in CPPFLAGS and LDFLAGS because GCC -maix64 implies that already when it invokes the linker. export OBJECT_MODE=64 should not be necessary with -X64. And hidden, magic, global variables are bad. libintl.a(libintl.so.9) probably will come back to bit you because different library versionings are floaing around. libintl.so.1, which is 1.0, and libintl.so.9, which is 0.9 and libintl.so.8, which is 0.8. -Wl,-bexpall should be useless because the explicit export list created by libtool overrides it. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Feb 2, 2018
Contributor
Next time I try fiddling with configure.ac (maybe see if I can get sigaltstack working, for instance) I'll consider cleaning up the defines there a little.
DNS investigation: could be mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs hardcoding an assumption on getifaddrs (which doesn't exist on AIX) or some bug in the icall part of GetHostByName_internal.
|
Next time I try fiddling with configure.ac (maybe see if I can get sigaltstack working, for instance) I'll consider cleaning up the defines there a little. DNS investigation: could be |
configure.ac
| LDFLAGS="${LDFLAGS} -Wl,-bexpall" | ||
| ;; | ||
| *) | ||
| ;; |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
libgc/configure.ac
| *-*-os400*) | ||
| AC_DEFINE(GC_AIX_THREADS) | ||
| AC_DEFINE(_REENTRANT) | ||
| ;; | ||
| *-*-haiku*) |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
lewurm
Feb 2, 2018
Member
undo this change in libgc, we'll likely have a submodule for boehm GC soon, so this would be lost anyway (/cc @joncham )
lewurm
Feb 2, 2018
Member
undo this change in libgc, we'll likely have a submodule for boehm GC soon, so this would be lost anyway (/cc @joncham )
libgc/pthread_stop_world.c
| @@ -2,7 +2,7 @@ | ||
| #if defined(GC_PTHREADS) && !defined(GC_SOLARIS_THREADS) \ | ||
| && !defined(GC_IRIX_THREADS) && !defined(GC_WIN32_THREADS) \ | ||
| && !defined(GC_DARWIN_THREADS) && !defined(GC_AIX_THREADS) | ||
| && !defined(GC_DARWIN_THREADS) |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
lewurm
Feb 2, 2018
Member
undo this change in libgc, we'll likely have a submodule for boehm GC soon, so this would be lost anyway (/cc @joncham )
lewurm
Feb 2, 2018
Member
undo this change in libgc, we'll likely have a submodule for boehm GC soon, so this would be lost anyway (/cc @joncham )
mono/metadata/boehm-gc.c
| * ship a "fixed" header file without "non-standard" declarations like it, so don't | ||
| * use it, even if it's there | ||
| */ | ||
| #if defined(HAVE_PTHREAD_GETATTR_NP) && defined(HAVE_PTHREAD_ATTR_GETSTACK) && !defined(_AIX) |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
lewurm
Feb 2, 2018
Member
pretty good job, congrats
looks good overall! do you think you can add a header that collects all those AIX specific extern hacks in support/ and mono/eglib? So it would be nicely in one file and not spread in the codebase.
|
pretty good job, congrats looks good overall! do you think you can add a header that collects all those AIX specific |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
build |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
@monojenkins build Linux PPC64 little endian |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Feb 2, 2018
Contributor
I think a lot of the AIX extern hacks can be removed because newer GCC packaged by Bull has better includes; as David said early in the thread, GCC 4.x on AIX was a "bad vintage."
Working on a commit to do this cleanup suggested by you two.
|
I think a lot of the AIX extern hacks can be removed because newer GCC packaged by Bull has better includes; as David said early in the thread, GCC 4.x on AIX was a "bad vintage." Working on a commit to do this cleanup suggested by you two. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
Suggestions from @lewurm done. |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
build |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
@monojenkins build Linux PPC64 little endian |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
NattyNarwhal
Feb 3, 2018
Contributor
LMK about merging this patch. I have a feeling I'll need to work on the BCL to fix a sockets issue, the same one I mentioned that prevents DNS from working; but it'd be perhaps prudent to branch again in master; and discuss the problem and what'd need to be changed in a new issue/PR.
|
LMK about merging this patch. I have a feeling I'll need to work on the BCL to fix a sockets issue, the same one I mentioned that prevents DNS from working; but it'd be perhaps prudent to branch again in master; and discuss the problem and what'd need to be changed in a new issue/PR. |
NattyNarwhal
referenced this pull request
Feb 4, 2018
Open
System.Net.NetworkInformation.NetworkInterface refactoring #6778
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
build |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
@monojenkins build Linux PPC64 little endian |
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
|
@monojenkins squash |
NattyNarwhal commentedJan 25, 2018
•
edited
Edited 4 times
-
NattyNarwhal
edited Feb 2, 2018 (most recent)
-
NattyNarwhal
edited Feb 2, 2018
-
NattyNarwhal
edited Jan 25, 2018
-
NattyNarwhal
edited Jan 25, 2018
Patch mostly complete
This is a patch to add support for AIX, the IBM Unix. The patch has been tested on AIX 6.1 TL9 on a POWER6 system, with GCC 6.3 sourced from Bull.
The port is capable of compiling itself and being installed. There may be minor issues, but these can be shaken out.
Tip: When using GCC, put
-gxcoffin your CFLAGS to generate COFF (the actual AIX binary format) debugging info. Unfortunately, dbx still snarfs on gcc compiled programs and gdb can't load cores either way; but it does let you run under gdb fine.