mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-13 23:30:04 +02:00
- Put binaries in the normal $binDir since there is no gcc2 version. - Include Kevin Thacker's patch to generate relocatable executables for Contiki.
400 lines
11 KiB
Plaintext
400 lines
11 KiB
Plaintext
From 1bd79b2e8b02c9147ee3fcbeae69ece7e7070687 Mon Sep 17 00:00:00 2001
|
|
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
|
|
Date: Sun, 14 Sep 2014 12:25:39 +0200
|
|
Subject: let sdbinutils know about Haiku.
|
|
|
|
|
|
diff --git a/support/sdbinutils/bfd/config.bfd b/support/sdbinutils/bfd/config.bfd
|
|
index ee1d39d..386faab 100644
|
|
--- a/support/sdbinutils/bfd/config.bfd
|
|
+++ b/support/sdbinutils/bfd/config.bfd
|
|
@@ -693,6 +693,9 @@ case "${targ}" in
|
|
targ_defvec=bfd_elf32_i386_vec
|
|
targ_selvecs="i386pe_vec i386pei_vec"
|
|
;;
|
|
+ i[3-7]86-*-haiku*)
|
|
+ targ_defvec=bfd_elf32_i386_vec
|
|
+ ;;
|
|
i[3-7]86-*-interix*)
|
|
targ_defvec=i386pei_vec
|
|
targ_selvecs="i386pe_vec"
|
|
--
|
|
2.7.0
|
|
|
|
|
|
From 1109aa92552ca00f54c3e9a980562f3a789104bc Mon Sep 17 00:00:00 2001
|
|
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
|
|
Date: Sun, 14 Sep 2014 12:26:14 +0200
|
|
Subject: Missing include.
|
|
|
|
|
|
diff --git a/sim/ucsim/cmd.src/newcmdposixcl.h b/sim/ucsim/cmd.src/newcmdposixcl.h
|
|
index 5050d2f..ef3ed70 100644
|
|
--- a/sim/ucsim/cmd.src/newcmdposixcl.h
|
|
+++ b/sim/ucsim/cmd.src/newcmdposixcl.h
|
|
@@ -32,6 +32,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|
#include "newcmdcl.h"
|
|
#include "cmdutil.h"
|
|
|
|
+#include <sys/select.h>
|
|
|
|
/*
|
|
* Command fd console
|
|
--
|
|
2.7.0
|
|
|
|
|
|
From c7067504f4e06e5905f253ac6597f611794ab8e9 Mon Sep 17 00:00:00 2001
|
|
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
|
|
Date: Sun, 14 Sep 2014 12:59:31 +0200
|
|
Subject: strings.h fix.
|
|
|
|
|
|
diff --git a/sim/ucsim/pobj.cc b/sim/ucsim/pobj.cc
|
|
index e809980..166d8b1 100644
|
|
--- a/sim/ucsim/pobj.cc
|
|
+++ b/sim/ucsim/pobj.cc
|
|
@@ -29,6 +29,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
+#include <strings.h>
|
|
|
|
#include "pstr.h"
|
|
/*#include "pobjt.h"*/
|
|
--
|
|
2.7.0
|
|
|
|
|
|
From 93c2311eb84b19e333946332959d4fbf6bc7a975 Mon Sep 17 00:00:00 2001
|
|
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
|
|
Date: Sun, 14 Sep 2014 12:59:16 +0200
|
|
Subject: Remove hardcoded -lm
|
|
|
|
|
|
diff --git a/sdas/as6808/Makefile.in b/sdas/as6808/Makefile.in
|
|
index 9ed2faf..407699d 100644
|
|
--- a/sdas/as6808/Makefile.in
|
|
+++ b/sdas/as6808/Makefile.in
|
|
@@ -37,7 +37,7 @@ VPATH = @srcdir@
|
|
CPPFLAGS = @CPPFLAGS@ -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../../support/util
|
|
CFLAGS = @CFLAGS@ @WALL_FLAG@ $(CPPFLAGS)
|
|
LDFLAGS = @LDFLAGS@
|
|
-LIBS = -lm
|
|
+LIBS =
|
|
|
|
OBJDIR = obj
|
|
|
|
diff --git a/sdas/as8051/Makefile.in b/sdas/as8051/Makefile.in
|
|
index 121110b..5df8be3 100644
|
|
--- a/sdas/as8051/Makefile.in
|
|
+++ b/sdas/as8051/Makefile.in
|
|
@@ -37,7 +37,7 @@ VPATH = @srcdir@
|
|
CPPFLAGS = @CPPFLAGS@ -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../../support/util
|
|
CFLAGS = @CFLAGS@ @WALL_FLAG@ $(CPPFLAGS)
|
|
LDFLAGS = @LDFLAGS@
|
|
-LIBS = -lm
|
|
+LIBS =
|
|
|
|
OBJDIR = obj
|
|
|
|
diff --git a/sdas/as8xcxxx/Makefile.in b/sdas/as8xcxxx/Makefile.in
|
|
index 5dbfade..2070d1f 100644
|
|
--- a/sdas/as8xcxxx/Makefile.in
|
|
+++ b/sdas/as8xcxxx/Makefile.in
|
|
@@ -37,7 +37,7 @@ VPATH = @srcdir@
|
|
CPPFLAGS = @CPPFLAGS@ -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../../support/util
|
|
CFLAGS = @CFLAGS@ @WALL_FLAG@ $(CPPFLAGS)
|
|
LDFLAGS = @LDFLAGS@
|
|
-LIBS = -lm
|
|
+LIBS =
|
|
|
|
OBJDIR = obj
|
|
|
|
diff --git a/sdas/asgb/Makefile.in b/sdas/asgb/Makefile.in
|
|
index e6da6ac..fe65407 100644
|
|
--- a/sdas/asgb/Makefile.in
|
|
+++ b/sdas/asgb/Makefile.in
|
|
@@ -37,7 +37,7 @@ VPATH = @srcdir@
|
|
CPPFLAGS = @CPPFLAGS@ -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../../support/util
|
|
CFLAGS = @CFLAGS@ @WALL_FLAG@ $(CPPFLAGS)
|
|
LDFLAGS = @LDFLAGS@
|
|
-LIBS = -lm
|
|
+LIBS =
|
|
|
|
OBJDIR = obj
|
|
|
|
diff --git a/sdas/asrab/Makefile.in b/sdas/asrab/Makefile.in
|
|
index 2924ab4..fa52fe2 100644
|
|
--- a/sdas/asrab/Makefile.in
|
|
+++ b/sdas/asrab/Makefile.in
|
|
@@ -37,7 +37,7 @@ VPATH = @srcdir@
|
|
CPPFLAGS = @CPPFLAGS@ -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../../support/util
|
|
CFLAGS = @CFLAGS@ @WALL_FLAG@ $(CPPFLAGS)
|
|
LDFLAGS = @LDFLAGS@
|
|
-LIBS = -lm
|
|
+LIBS =
|
|
|
|
OBJDIR = obj
|
|
|
|
diff --git a/sdas/asstm8/Makefile.in b/sdas/asstm8/Makefile.in
|
|
index 812b484..4a056f7 100755
|
|
--- a/sdas/asstm8/Makefile.in
|
|
+++ b/sdas/asstm8/Makefile.in
|
|
@@ -37,7 +37,7 @@ VPATH = @srcdir@
|
|
CPPFLAGS = @CPPFLAGS@ -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../../support/util
|
|
CFLAGS = @CFLAGS@ @WALL_FLAG@ $(CPPFLAGS)
|
|
LDFLAGS = @LDFLAGS@
|
|
-LIBS = -lm
|
|
+LIBS =
|
|
|
|
OBJDIR = obj
|
|
|
|
diff --git a/sdas/astlcs90/Makefile.in b/sdas/astlcs90/Makefile.in
|
|
index c3e6a21..e50587b 100644
|
|
--- a/sdas/astlcs90/Makefile.in
|
|
+++ b/sdas/astlcs90/Makefile.in
|
|
@@ -37,7 +37,7 @@ VPATH = @srcdir@
|
|
CPPFLAGS = @CPPFLAGS@ -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../../support/util
|
|
CFLAGS = @CFLAGS@ @WALL_FLAG@ $(CPPFLAGS)
|
|
LDFLAGS = @LDFLAGS@
|
|
-LIBS = -lm
|
|
+LIBS =
|
|
|
|
OBJDIR = obj
|
|
|
|
diff --git a/sdas/asz80/Makefile.in b/sdas/asz80/Makefile.in
|
|
index d8cc0e1..6aa7532 100644
|
|
--- a/sdas/asz80/Makefile.in
|
|
+++ b/sdas/asz80/Makefile.in
|
|
@@ -37,7 +37,7 @@ VPATH = @srcdir@
|
|
CPPFLAGS = @CPPFLAGS@ -DSDCDB -DNOICE -DINDEXLIB -I. -I$(srcdir) -I$(srcdir)/../asxxsrc -I$(srcdir)/../../support/util
|
|
CFLAGS = @CFLAGS@ @WALL_FLAG@ $(CPPFLAGS)
|
|
LDFLAGS = @LDFLAGS@
|
|
-LIBS = -lm
|
|
+LIBS =
|
|
|
|
OBJDIR = obj
|
|
|
|
diff --git a/src/Makefile.in b/src/Makefile.in
|
|
index fc22c22..ebf63f1 100644
|
|
--- a/src/Makefile.in
|
|
+++ b/src/Makefile.in
|
|
@@ -15,7 +15,7 @@ PORTS = $(shell cat ../ports.build)
|
|
ALLPORTS = $(shell cat ../ports.all)
|
|
PORT_LIBS = $(PORTS:%=%/port.a)
|
|
|
|
-LIBS = -lm @LIBS@
|
|
+LIBS = @LIBS@
|
|
|
|
CFLAGS = @CFLAGS@ @WALL_FLAG@
|
|
CXXFLAGS = @CXXFLAGS@ @WALL_FLAG@
|
|
--
|
|
2.7.0
|
|
|
|
|
|
From aef811431a7cf3d20e26da1302c5fbfc6d6dd1a0 Mon Sep 17 00:00:00 2001
|
|
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
|
|
Date: Fri, 22 Jan 2016 21:01:19 +0100
|
|
Subject: Import Kevin Thacker patch for runtime relocation support.
|
|
|
|
|
|
diff --git a/sdas/linksrc/Makefile.in b/sdas/linksrc/Makefile.in
|
|
index 56537a5..35f1922 100644
|
|
--- a/sdas/linksrc/Makefile.in
|
|
+++ b/sdas/linksrc/Makefile.in
|
|
@@ -47,7 +47,7 @@ ASXXLIBSRC = strcmpi.c
|
|
SRC = lk_readnl.c lkaomf51.c lkar.c lkarea.c lkdata.c lkelf.c lkeval.c \
|
|
lkhead.c lklex.c lklib.c lklibr.c lklist.c lkmain.c lkmem.c \
|
|
lknoice.c lkout.c lkrel.c lkrloc.c lkrloc3.c lks19.c lksdcclib.c \
|
|
- lksym.c sdld.c lksdcdb.c lkbank.c
|
|
+ lksym.c sdld.c lksdcdb.c lkbank.c lkrrel.c
|
|
|
|
LKSOURCES = $(SRC) $(ASXXLIBSRC:%.c=$(ASXXLIB)/%.c)
|
|
|
|
diff --git a/sdas/linksrc/aslink.h b/sdas/linksrc/aslink.h
|
|
index e0865f8..d9f6316 100644
|
|
--- a/sdas/linksrc/aslink.h
|
|
+++ b/sdas/linksrc/aslink.h
|
|
@@ -1033,6 +1033,8 @@ extern int yflag; /* -y, enable SDCC Debug output
|
|
*/
|
|
#endif
|
|
|
|
+extern int hflag; /* Generate relocatable executable
|
|
+ */
|
|
extern int pflag; /* print linker command file flag
|
|
*/
|
|
extern int uflag; /* Listing relocation flag
|
|
diff --git a/sdas/linksrc/lkdata.c b/sdas/linksrc/lkdata.c
|
|
index bb83900..bfaa197 100644
|
|
--- a/sdas/linksrc/lkdata.c
|
|
+++ b/sdas/linksrc/lkdata.c
|
|
@@ -66,6 +66,9 @@ int oflag; /* Output file type flag
|
|
int objflg; /* Linked file/library object output flag
|
|
*/
|
|
|
|
+int hflag; /* Generate relocatable executable
|
|
+ */
|
|
+
|
|
#if NOICE
|
|
int jflag; /* NoICE output flag
|
|
*/
|
|
diff --git a/sdas/linksrc/lkmain.c b/sdas/linksrc/lkmain.c
|
|
index f68e8f9..bd426dd 100644
|
|
--- a/sdas/linksrc/lkmain.c
|
|
+++ b/sdas/linksrc/lkmain.c
|
|
@@ -233,6 +233,7 @@ main(int argc, char *argv[])
|
|
startp->f_idp = "";
|
|
|
|
pflag = 1;
|
|
+ hflag = 0;
|
|
|
|
for(i=1; i<argc; i++) {
|
|
ip = ib;
|
|
@@ -960,6 +961,11 @@ parse()
|
|
}
|
|
return(0);
|
|
|
|
+ case 'h':
|
|
+ case 'H':
|
|
+ hflag = 1;
|
|
+ break;
|
|
+
|
|
case 'I':
|
|
if (is_sdld() && !(TARGET_IS_Z80 || TARGET_IS_GB)) {
|
|
iramsav();
|
|
diff --git a/sdas/linksrc/lkrloc3.c b/sdas/linksrc/lkrloc3.c
|
|
index cf184f2..6f11cdc 100644
|
|
--- a/sdas/linksrc/lkrloc3.c
|
|
+++ b/sdas/linksrc/lkrloc3.c
|
|
@@ -31,6 +31,7 @@
|
|
*/
|
|
|
|
#include "aslink.h"
|
|
+#include "lkrrel.h"
|
|
|
|
/*)Module lkrloc3.c
|
|
*
|
|
@@ -332,6 +333,9 @@ relr3(void)
|
|
* Do remaining relocations
|
|
*/
|
|
while (more()) {
|
|
+ int output_relocation_record;
|
|
+ int raddr;
|
|
+
|
|
error = 0;
|
|
mode = (int) eval();
|
|
|
|
@@ -390,6 +394,95 @@ relr3(void)
|
|
reli -= paga + pags;
|
|
}
|
|
|
|
+ /* KevT 28-05-2005 */
|
|
+
|
|
+ if (hflag)
|
|
+ {
|
|
+ output_relocation_record = 0;
|
|
+ if (mode & R3_SYM)
|
|
+ {
|
|
+ /* If the symbol is defined in a absolute area, then we do not
|
|
+ output a record. This allows us to reference absolute addresses
|
|
+ in our code, but it can still be relocated */
|
|
+
|
|
+ /* If the symbol is relative, it is within our relocatable program */
|
|
+
|
|
+ /* printf("Symbol: %s\n",s[rindex]->s_id); */
|
|
+ if ((s[rindex]->s_axp->a_bap->a_flag & A4_ABS)==0)
|
|
+ {
|
|
+ output_relocation_record=1;
|
|
+ }
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* If the area is absolute then we do not output a record.
|
|
+ This allows us to reference absolute memory, but still the code
|
|
+ can be relocated. */
|
|
+ /* If the area is relative, it refers to data that is part of the
|
|
+ relocatable program */
|
|
+
|
|
+ /* printf("Area: %s\n",a[rindex]->a_bap->a_id); */
|
|
+ if ((a[rindex]->a_bap->a_flag & A4_ABS)==0)
|
|
+ {
|
|
+ output_relocation_record=1;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (output_relocation_record)
|
|
+ {
|
|
+ a_uint relocate_address = pc+(rtp-rtofst);
|
|
+ if (hilo)
|
|
+ {
|
|
+ raddr = reli + ((rtval[rtp]&0x0ff)<<8) + (rtval[rtp+1]&0x0ff);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ raddr = reli + ((rtval[rtp+1]&0x0ff)<<8) + (rtval[rtp]&0x0ff);
|
|
+ }
|
|
+ /*printf("Relocation modify address: %04x\n",relocate_address); */
|
|
+ /*printf("Relocation address: %04x\n",raddr); */
|
|
+ if (mode & R3_BYTE)
|
|
+ {
|
|
+ if (mode & R3_BYTX)
|
|
+ {
|
|
+ if (mode & R3_MSB)
|
|
+ {
|
|
+
|
|
+relrec8hi(relocate_address,raddr);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+
|
|
+relrec8lo(relocate_address,raddr);
|
|
+ }
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ printf("not supported");
|
|
+ }
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ if (mode & R3_BYTX)
|
|
+ {
|
|
+ if (mode & R3_MSB)
|
|
+ {
|
|
+ printf("not supported");
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ printf("not supported");
|
|
+ }
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ relrec16(relocate_address);
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
+
|
|
/*
|
|
* R3_BYTE or R3_WORD operation
|
|
*/
|
|
@@ -755,6 +848,12 @@ rele3()
|
|
if (uflag != 0) {
|
|
lkulist(0);
|
|
}
|
|
+
|
|
+ /* output relocation data */
|
|
+ if (hflag) {
|
|
+ relrecwrite();
|
|
+ }
|
|
+
|
|
if (oflag != 0) {
|
|
lkflush();
|
|
lkfclose();
|
|
--
|
|
2.7.0
|
|
|