hercules-390 / hyperion

Hercules 390
Other
246 stars 69 forks source link

macOS 10.13.3 Clang - Undefined symbols for architecture x86_64 #246

Closed zebuscat closed 6 years ago

zebuscat commented 6 years ago

Hi, trying to compile 'Commit 23-01-2018' gives me the following error:

clang: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument] clang: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument] Undefined symbols for architecture x86_64: "_pthread_getcpuclockid", referenced from: _configure_cpu in libherc.a(config.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: [hercules] Error 1 make[1]: [all-recursive] Error 1 make: *** [all] Error 2

I am using these compiler options: CFLAGS="-O3 -D_FORTIFY_SOURCE=0" CC="gcc" ../../hyperion/configure --enable-optimization="-O3 -mtune=native -fomit-frame-pointer -Wunreachable-code" --enable-het-bzip2 --enable-cckd-bzip2 --enable-ipv6 make

No issues with 'Commit 27-11-2017' here.

Dirk

ghost commented 6 years ago

the gentleman who caused the problem is going to do something about it or not ???

Peter-J-Jansen commented 6 years ago

I am sorry to admit that my fix for the incorrect getrusage() following the suggestion in Issue #217 overlooked the absence of pthread_getcpuclokid() in macOS and some other Unix implementations. What may be possible in those cases is to revert to using host_tod() instead as the incorrect getrusage() originally did. Better solutions are suggested in issue #217 by superdave. However, I do not have macOS available to me to perform this task, so this may take some time for me to correct this situation. Peter J.

ghost commented 6 years ago

How difficult would it be to check for the pthread_getcpuclockid and ifdef accordingly, or quick and dirty… ifdef APPLE

we have lived with the error for a long time, and looks like nobody with an apple has had the need to run a 2nd level zVM so leaving things as they were before might not hurt anybody for a while

I looked at it but without a more deep knowledge of the logic I thought it would be a waste of time even to try. cheers e

On 13 Feb 2018, at 15:55, Peter Jansen notifications@github.com wrote:

I am sorry to admit that my fix for the incorrect getrusage() following the suggestion in Issue #217 https://github.com/hercules-390/hyperion/issues/217 overlooked the absence of pthread_getcpuclokid() in macOS and some other Unix implementations. What may be possible in those cases is to revert to using host_tod() instead as the incorrect getrusage() originally did. Better solutions are suggested in issue #217 https://github.com/hercules-390/hyperion/issues/217 by superdave. However, I do not have macOS available to me to perform this task, so this may take some time for me to correct this situation. Peter J.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/hercules-390/hyperion/issues/246#issuecomment-365290575, or mute the thread https://github.com/notifications/unsubscribe-auth/ABUXcIQ_i65uQS6nAaUufa0ZbTMGK1QBks5tUaJKgaJpZM4R4KzR.

ivan-w commented 6 years ago

Ackkk ! Please ! No OS specific detection macros in the code... That's why we have autoconf !

Leaving things as before breaks EVERY attempt at running a second level z/VM (not only on apple). It breaks on linux, on Windows...

ghost commented 6 years ago

looks like You did not care to try understand my reply… it was simply a suggestion for QUICK AND DIRTY workaround to disable the code on APPLE until a PROPER correct solution could be implemented

On 13 Feb 2018, at 16:18, Ivan Warren notifications@github.com wrote:

Ackkk ! Please ! No OS specific detection macros in the code... That's why we have autoconf !

Leaving things as before breaks EVERY attempt at running a second level z/VM (not only on apple). It breaks on linux, on Windows...

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/hercules-390/hyperion/issues/246#issuecomment-365297742, or mute the thread https://github.com/notifications/unsubscribe-auth/ABUXcKb55_lpOCkwEf7pGMHGCIoyzRx5ks5tUafGgaJpZM4R4KzR.

ivan-w commented 6 years ago

The problem is that it probably also breaks on other OSes (xxxBSD notably)

ghost commented 6 years ago

I agree on that… the real problem is that the configuration process is still a bit murky configure.ac is almost abandoned and the CMAKE process is not strong enough yet IMO

On 13 Feb 2018, at 16:28, Ivan Warren notifications@github.com wrote:

The problem is that it probably also breaks on other OSes (xxxBSD notably)

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/hercules-390/hyperion/issues/246#issuecomment-365300967, or mute the thread https://github.com/notifications/unsubscribe-auth/ABUXcD_J5EM66GOYqKR4EXZO9qqOJhjlks5tUaoYgaJpZM4R4KzR.

ivan-w commented 6 years ago

autoconf ? abandoned ? says YOU ! But let's not dwell into that here or now.

So for the time being we'll have to resort to autoconf - since it works.

srorso commented 6 years ago

Issue also affects Solaris 11.3 / gcc 4.8.2. No hurry on a resolution for me, though.

srorso commented 6 years ago

Commit a457c40 appears to have addressed the issue on Solaris.

zebuscat commented 6 years ago

Same here - macOS 10.13.3 Clang now compiles the new cut - no errors so far. Thanx Dirk