From: Arnd Bergmann <arnd@arndb.de>
To: linux-hotplug@vger.kernel.org
Subject: Re: [PATCH] ia64 fixes
Date: Mon, 24 Nov 2003 03:59:56 +0000 [thread overview]
Message-ID: <marc-linux-hotplug-106969818316528@msgid-missing> (raw)
On Monday 24 November 2003 18:09, Martin Hicks wrote:
> My makefile-foo is probably sub-par. If someone could figure out a good
> way to get things right for 64bit platforms, then that would be good.
This patch works for s390x and should be architecture-independent.
Unfortunately, I have found that both the s390 and x86-64 kernel headers
have trivial bugs that prevent building klibc against them.
> I'm not entirely sure why I had to change $(GCC) to $(LD) in the link
> step. If I don't I get a warning:
>
> /usr/bin/ld: Warning: type of symbol 'errno' changed from 1 to 6 in
> /usr/lib/gcc-lib/ia64-linux/3.3.2/../../../libc.a(errno.o)
>
> Maybe we're missing a flag on the final link, while using $(GCC)? The
> old Makefile.klibc used $(LD), which allowed me to track down this
> problem.
Hmm, it does sound like a real problem. If you are using a glibc with
tls enabled, simply using 'extern int errno;' is guaranteed to fail.
Does 'find -name \*.o | xargs readelf -a | grep errno' reveal anything
interesting?
> @@ -93,6 +96,10 @@
> CFLAGS+=-pipe
> endif
>
> +ifeq ($(strip $(ARCH)),ia64)
> + BITSd
> +endif
> +
The information can be taken from klibc/arch/${ARCH}/MCONFIG.
> - $(CC) $(LDFLAGS) -o $(ROOT) $(CRT0) $(OBJS) $(LIB_OBJS) $(ARCH_LIB_OBJS)
> + $(LD) $(LDFLAGS) -o $(ROOT) $(CRT0) $(OBJS) $(LIB_OBJS) $(ARCH_LIB_OBJS)
Using ld instead of gcc breaks 32 bit platforms, unless you manually add libgcc
like we do for the klibc build (64 bit division is a library function).
I've also added a definition for LD, so it becomes usable for cross-compiling.
Arnd <><
=== Makefile 1.37 vs edited ==--- 1.37/Makefile Mon Nov 24 06:38:00 2003
+++ edited/Makefile Mon Nov 24 04:38:01 2003
@@ -55,6 +55,7 @@
# to compile vs uClibc, that can be done here as well.
CROSS = #/usr/i386-linux-uclibc/usr/bin/i386-uclibc-
CC = $(CROSS)gcc
+LD = $(CROSS)gcc
AR = $(CROSS)ar
STRIP = $(CROSS)strip
RANLIB = $(CROSS)ranlib
@@ -109,6 +110,7 @@
ifeq ($(strip $(KLIBC)),true)
KLIBC_DIR = klibc/klibc
INCLUDE_DIR := $(KLIBC_DIR)/include
+ include $(KLIBC_DIR)/arch/$(ARCH)/MCONFIG
# arch specific objects
LIBGCC = $(shell $(CC) --print-libgcc)
ARCH_LIB_OBJS = \
@@ -117,8 +119,10 @@
CRT0 = $(KLIBC_DIR)/crt0.o
- LIBC = $(ARCH_LIB_OBJS) $(LIB_OBJS)
- CFLAGS += -nostdinc -I$(INCLUDE_DIR) -I$(INCLUDE_DIR)/bits32 -I$(GCCINCDIR) -Iklibc/linux/include -D__KLIBC__
+ LIBC = $(ARCH_LIB_OBJS) $(LIB_OBJS) $(CRT0)
+ CFLAGS += -nostdinc -I$(INCLUDE_DIR) -I$(KLIBC_DIR)/arch/$(ARCH)/include \
+ -I$(INCLUDE_DIR)/bits$(BITSIZE) -I$(GCCINCDIR) -Iklibc/linux/include \
+ -D__KLIBC__
LIB_OBJS LDFLAGS = --static --nostdlib -nostartfiles
else
@@ -169,7 +173,7 @@
$(ROOT): $(GEN_HEADERS) $(OBJS)
- $(CC) $(LDFLAGS) -o $(ROOT) $(CRT0) $(OBJS) $(LIB_OBJS) $(ARCH_LIB_OBJS)
+ $(LD) $(LDFLAGS) -o $(ROOT) $(CRT0) $(OBJS) $(LIB_OBJS) $(ARCH_LIB_OBJS)
$(STRIPCMD) $(ROOT)
clean:
=== tdb/tdb.h 1.1 vs edited ==--- 1.1/tdb/tdb.h Tue Aug 5 02:26:58 2003
+++ edited/tdb/tdb.h Mon Nov 24 04:29:13 2003
@@ -25,6 +25,7 @@
extern "C" {
#endif
+#include <signal.h>
/* flags to tdb_store() */
#define TDB_REPLACE 1
Arnd <><
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive? Does it
help you create better code? SHARE THE LOVE, and help us help
YOU! Click Here: http://sourceforge.net/donate/
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
next reply other threads:[~2003-11-24 3:59 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-11-24 3:59 Arnd Bergmann [this message]
2003-11-24 17:09 ` [PATCH] ia64 fixes Martin Hicks
2003-11-24 18:08 ` Martin Hicks
2003-11-24 21:00 ` Martin Hicks
2003-11-24 22:15 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=marc-linux-hotplug-106969818316528@msgid-missing \
--to=arnd@arndb.de \
--cc=linux-hotplug@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).