Re: [PATCH 0/5] let make flexible for multiple host

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



(2012/04/18 21:57), Dave Anderson wrote:
> 
> 
> ----- Original Message -----
>> (2012/04/17 23:44), Dave Anderson wrote:

>> Then, I'll start mips architecture (seems to go toward embedded minority).
>> There are probably the similar considerations about cross compile.
>> I want to be done with "make target=MIPS host_cross=X86" by adding
>> mips tables.
> 
> Wait a minute -- how about putting the horse before the cart?  There
> is a significant amount of work involved with supporting MIPS as an
> architecture, which would have to be accomplished first.
>>
>>> Also, note that your patch fails because it collides with Rabin's queued
>>> fix for building SIAL for target=ARM and target=PPC builds:
>>>
>>>     [PATCH] build sial with TARGET_CFLAGS
>>>    https://www.redhat.com/archives/crash-utility/2012-March/msg00113.html
>>
>> I haven't caught this update. I'd send updated portion.
>>
>> Thanks,
>> Toshi
> 
> My hope was that you could accomplish the cross-compile automatically
> without invoking the extra "host_cross=X86" option support.  If
> configure sees that you're trying a "target=PPC" on an x86 or x86_64,
> then it could presume it's your unique cross-compile scenario, and
> then do whatever it has to do from that point on.

I investigated current configure's target definition.

[configure.c]
 #ifdef __i386__
         target_data.target = X86;
 #endif
  :
 #ifdef __x86_64__
         target_data.target = X86_64;
 #endif

I have to handle host type here, and toss it as gdb configure's --host.
This seems to be accomplished by switching compiler option.
 $ echo | gcc -E -dM - | grep __x86_64__
 #define __x86_64__ 1
 $ echo | gcc -m32 -E -dM - | grep __i386__
 #define __i386__ 1
By adding -m32 to configure.c build, configure becomes to handle i386 host.

I'm going to choose a gcc option for configure.c according by cross host type.
Incidentally, even if gdb was configured with --host=X86_64, there were
no obvious crash build problems in my cross environ.

I make respin which don't require option, also drop "is_cross" classification.

> I also was under the impression that a MIPS binary was not all that
> beneficial to the embedded folks, because it is not a typical
> situation where the crash analysis could take place *on* the embedded
> MIPS platform.
> 
> Dave 

I'm not sure about general MIPS platform fields yet, no experiences.
I just want to study about MIPS now, and I think implementing crash
is one of the faster approach to understand architecture parts in kernel.
Of course, I'm happy if MIPS crash analysis becomes beneficial to ...

Thanks,
Toshi

> --
> Crash-utility mailing list
> Crash-utility@xxxxxxxxxx
> https://www.redhat.com/mailman/listinfo/crash-utility
> 


Date: Mon, 16 Apr 2012 17:42:05 +0900
Subject: [PATCH 1/4] configure: retake the way of host compiler detection

When make crash with target=[TARGET] option at different host environs,
configure will detect TARGET from the new target and host tables which
declare according by current build cases.

This way can provide easier way for new relationship supports between
host and target just by adding corresponding table entry.

Signed-off-by: Toshikazu Nakayama <nakayama.ts@xxxxxxxxxxxxxx>
---
 configure.c |  406 ++++++++++++++++++++++++-----------------------------------
 1 files changed, 163 insertions(+), 243 deletions(-)

diff --git a/configure.c b/configure.c
index 41ecbcb..63d3244 100755
--- a/configure.c
+++ b/configure.c
@@ -112,35 +112,84 @@ char *get_extra_flags(char *);
 #define X86_64  8
 #define ARM	9
 
-#define TARGET_X86    "TARGET=X86"
-#define TARGET_ALPHA  "TARGET=ALPHA"
-#define TARGET_PPC    "TARGET=PPC"
-#define TARGET_IA64   "TARGET=IA64"
-#define TARGET_S390   "TARGET=S390"
-#define TARGET_S390X  "TARGET=S390X"
-#define TARGET_PPC64  "TARGET=PPC64"
-#define TARGET_X86_64 "TARGET=X86_64"
-#define TARGET_ARM    "TARGET=ARM"
-
-#define TARGET_CFLAGS_X86    "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
-#define TARGET_CFLAGS_ALPHA  "TARGET_CFLAGS="
-#define TARGET_CFLAGS_PPC    "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
-#define TARGET_CFLAGS_IA64   "TARGET_CFLAGS="
-#define TARGET_CFLAGS_S390   "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
-#define TARGET_CFLAGS_S390X  "TARGET_CFLAGS="
-#define TARGET_CFLAGS_PPC64  "TARGET_CFLAGS=-m64"
-#define TARGET_CFLAGS_X86_64 "TARGET_CFLAGS="
-#define TARGET_CFLAGS_ARM            "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
-#define TARGET_CFLAGS_ARM_ON_X86     "TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64"
-#define TARGET_CFLAGS_ARM_ON_X86_64  "TARGET_CFLAGS=-m32 -D_FILE_OFFSET_BITS=64"
-#define TARGET_CFLAGS_X86_ON_X86_64  "TARGET_CFLAGS=-m32 -D_FILE_OFFSET_BITS=64"
-#define TARGET_CFLAGS_PPC_ON_PPC64   "TARGET_CFLAGS=-m32 -D_FILE_OFFSET_BITS=64 -fPIC"
-
-#define GDB_TARGET_DEFAULT        "GDB_CONF_FLAGS="
-#define GDB_TARGET_ARM_ON_X86     "GDB_CONF_FLAGS=--target=arm-elf-linux"
-#define GDB_TARGET_ARM_ON_X86_64  "GDB_CONF_FLAGS=--target=arm-elf-linux CFLAGS=-m32"
-#define GDB_TARGET_X86_ON_X86_64  "GDB_CONF_FLAGS=--target=i686-pc-linux-gnu CFLAGS=-m32"
-#define GDB_TARGET_PPC_ON_PPC64   "GDB_CONF_FLAGS=--target=ppc-elf-linux CFLAGS=-m32"
+static struct host_table {
+	int host;
+	const char *cflags;		/* TARGET_CFLAGS */
+	const char *gdb_conf_flags;	/* GDB_CONF_FLAGS */
+} arm[] = {
+	{
+		.host = X86,
+		.cflags = "-D_FILE_OFFSET_BITS=64",
+		.gdb_conf_flags = "--target=arm-elf-linux",
+	},
+	{
+		.host = X86_64,
+		.cflags = "-m32 -D_FILE_OFFSET_BITS=64",
+		.gdb_conf_flags = "--target=arm-elf-linux CFLAGS=-m32",
+	},
+}, x86[] = {
+	{
+		.host = X86_64,
+		.cflags = "-m32 -D_FILE_OFFSET_BITS=64",
+		.gdb_conf_flags = "--target=i686-pc-linux-gnu CFLAGS=-m32",
+	},
+}, ppc[] = {
+	{
+		.host = PPC64,
+		.cflags = "-m32 -D_FILE_OFFSET_BITS=64 -fPIC",
+		.gdb_conf_flags = "--target=ppc-elf-linux CFLAGS=-m32",
+	}
+};
+
+static struct target_table {
+	char *target;			/* TARGET alias */
+	const char *cflags;		/* TARGET_CFLAGS default */
+	const char *gdb_conf_flags;	/* GDB_CONF_FLAGS default */
+	struct host_table *hosts, *host;
+	int num_hosts;
+} target_arch[] = {
+	{
+		.target = "UNKNOWN",
+	},
+	{
+		.target = "X86",
+		.cflags = "-D_FILE_OFFSET_BITS=64",
+		.hosts = x86,
+		.num_hosts = (sizeof(x86)/sizeof(struct host_table)),
+	},
+	{
+		.target = "ALPHA",
+	},
+	{
+		.target = "PPC",
+		.cflags = "-D_FILE_OFFSET_BITS=64",
+		.hosts = ppc,
+		.num_hosts = (sizeof(ppc)/sizeof(struct host_table)),
+	},
+	{
+		.target = "IA64",
+	},
+	{
+		.target = "S390",
+		.cflags = "-D_FILE_OFFSET_BITS=64",
+	},
+	{
+		.target = "S39X",
+	},
+	{
+		.target = "PPC64",
+		.cflags = "-m64",
+	},
+	{
+		.target = "X86_64",
+	},
+	{
+		.target = "ARM",
+		.cflags = "-D_FILE_OFFSET_BITS=64",
+		.hosts = arm,
+		.num_hosts = (sizeof(arm)/sizeof(struct host_table)),
+	},
+};
 
 /*
  *  The original plan was to allow the use of a particular version
@@ -313,6 +362,7 @@ get_current_configuration(struct supported_gdb_version *sp)
 	FILE *fp;
 	static char buf[512];
 	char *p;
+	int i, host, target;
 
 #ifdef __alpha__
         target_data.target = ALPHA;
@@ -349,39 +399,40 @@ get_current_configuration(struct supported_gdb_version *sp)
 	 */
 	target_data.host = target_data.target;
 
+	/*
+	 * Check the requirements for host and target.
+	 */
+	host = target_data.host;
 	if (target_data.target_as_param) {
-		if ((target_data.target == X86 || target_data.target == X86_64) &&
-		    (name_to_target((char *)target_data.target_as_param) == ARM)) {
-			/* 
-			 *  Debugging of ARM core files supported on X86, and on
-			 *  X86_64 when built as a 32-bit executable.
-			 */
-			target_data.target = ARM;
-		} else if ((target_data.target == X86_64) &&
-			(name_to_target((char *)target_data.target_as_param) == X86)) {
+		target = name_to_target((char *)target_data.target_as_param);
+		if (target != host) {
+			for (i = 0; i < target_arch[target].num_hosts; i++)
+				if (target_arch[target].hosts[i].host == host)
+					break;
+			if (i == target_arch[target].num_hosts) {
+				fprintf(stderr,
+					"\ntarget=%s is not supported on the "
+					"%s host architecture\n\n",
+					target_data.target_as_param,
+					target_to_name(host));
+				exit(1);
+			}
 			/*
-			 *  Build an X86 crash binary on an X86_64 host.
+			 * target can build at this host.
 			 */
-			target_data.target = X86;
-		} else if ((target_data.target == PPC64) &&
-			(name_to_target((char *)target_data.target_as_param) == PPC)) {
+			target_data.target = target;
+			target_arch[target].host =
+						&target_arch[target].hosts[i];
+		} else { /* target == host */
+			if (target_data.initial_gdb_target != UNKNOWN &&
+			    host != target_data.initial_gdb_target)
+				arch_mismatch(sp);
 			/*
-			 *  Build an PPC crash binary on an PPC64 host.
+			 * target can build.
 			 */
-			target_data.target = PPC;
-		} else if (name_to_target((char *)target_data.target_as_param) ==
-			target_data.host) {
-			if ((target_data.initial_gdb_target != UNKNOWN) &&
-			    (target_data.host != target_data.initial_gdb_target))
-				arch_mismatch(sp);
-		} else {
-			fprintf(stderr,
-			    "\ntarget=%s is not supported on the %s host architecture\n\n",
-				target_data.target_as_param,
-				target_to_name(target_data.host));
-			exit(1);
+			target_data.target = target;
 		}
-        }
+	}
 
 	/*
 	 *  Impose implied (sticky) target if an initial build has been
@@ -389,39 +440,21 @@ get_current_configuration(struct supported_gdb_version *sp)
 	 */
 	if (target_data.initial_gdb_target && 
 	    (target_data.target != target_data.initial_gdb_target)) {
-		if ((target_data.initial_gdb_target == ARM) &&
-		    (target_data.target != ARM)) {
-			if ((target_data.target == X86) || 
-			    (target_data.target == X86_64))
-				target_data.target = ARM;
-			else
-				arch_mismatch(sp);
-		}
-		if ((target_data.target == ARM) &&
-		    (target_data.initial_gdb_target != ARM))
-			arch_mismatch(sp);
-
-		if ((target_data.initial_gdb_target == X86) &&
-		    (target_data.target != X86)) {
-			if (target_data.target == X86_64) 
-				target_data.target = X86;
-			else
-				arch_mismatch(sp);
-		}
-		if ((target_data.target == X86) &&
-		    (target_data.initial_gdb_target != X86))
-			arch_mismatch(sp);
-
-		if ((target_data.initial_gdb_target == PPC) &&
-		    (target_data.target != PPC)) {
-			if (target_data.target == PPC64) 
-				target_data.target = PPC;
-			else
-				arch_mismatch(sp);
-		}
-		if ((target_data.target == PPC) &&
-		    (target_data.initial_gdb_target != PPC))
+		/*
+		 * If make split target= option, check previous setup and
+		 * rebuild with previous target.
+		 */
+		target = target_data.initial_gdb_target;
+		for (i = 0; i < target_arch[target].num_hosts; i++)
+			if (target_arch[target].hosts[i].host == host)
+				break;
+		if (i == target_arch[target].num_hosts)
 			arch_mismatch(sp);
+		/*
+		 * initial target can build at this host.
+		 */
+		target_data.target = target;
+		target_arch[target].host = &target_arch[target].hosts[i];
 	}
 
         if ((fp = fopen("Makefile", "r")) == NULL) {
@@ -497,36 +530,9 @@ show_configuration(void)
 	if (target_data.flags & QUIET)
 		return;
 
-	switch (target_data.target)
-	{
-	case X86:    
-		printf("TARGET: X86\n");
-		break;
-	case ALPHA: 
-		printf("TARGET: ALPHA\n");
-		break;
-	case PPC:    
-		printf("TARGET: PPC\n");
-		break;
-	case IA64:   
-		printf("TARGET: IA64\n");
-		break;
-	case S390:
-		printf("TARGET: S390\n");
-		break;
-	case S390X:
-		printf("TARGET: S390X\n");
-		break;
-	case PPC64:
-		printf("TARGET: PPC64\n");
-		break;
-	case X86_64:
-		printf("TARGET: X86_64\n");
-		break;
-	case ARM:
-		printf("TARGET: ARM\n");
-		break;
-	}
+	if (target_data.target <
+	    sizeof(target_arch) / sizeof(struct target_table))
+		printf("TARGET: %s\n", target_arch[target_data.target].target);
 
 	if (strlen(target_data.program)) {
 		for (i = 0; i < (strlen("TARGET")-strlen(target_data.program)); 
@@ -548,70 +554,31 @@ build_configure(struct supported_gdb_version *sp)
 {
 	FILE *fp1, *fp2;
 	char buf[512];
-	char *target;
-	char *target_CFLAGS;
-	char *gdb_conf_flags;
+	char target[128];
+	char target_CFLAGS[128];
+	char gdb_conf_flags[128];
 	char *ldflags;
 	char *cflags;
 
 	get_current_configuration(sp);
 
-	target = target_CFLAGS = NULL;
-
-	gdb_conf_flags = GDB_TARGET_DEFAULT;
-	switch (target_data.target)
-	{
-	case X86:
-		target = TARGET_X86;
-		if (target_data.host == X86_64) {
-                        target_CFLAGS = TARGET_CFLAGS_X86_ON_X86_64;
-			gdb_conf_flags = GDB_TARGET_X86_ON_X86_64;
-		} else
-			target_CFLAGS = TARGET_CFLAGS_X86;
-		break;
-	case ALPHA:
-		target = TARGET_ALPHA;
-		target_CFLAGS = TARGET_CFLAGS_ALPHA;
-		break;
-	case PPC:
-		target = TARGET_PPC;
-		if (target_data.host == PPC64) {
-                        target_CFLAGS = TARGET_CFLAGS_PPC_ON_PPC64;
-			gdb_conf_flags = GDB_TARGET_PPC_ON_PPC64;
-		} else
-			target_CFLAGS = TARGET_CFLAGS_PPC;
-		break;
-	case IA64:
-		target = TARGET_IA64;
-                target_CFLAGS = TARGET_CFLAGS_IA64;
-		break;
-	case S390:
-		target = TARGET_S390;
-		target_CFLAGS = TARGET_CFLAGS_S390;
-		break;
-	case S390X:
-		target = TARGET_S390X;
-		target_CFLAGS = TARGET_CFLAGS_S390X;
-		break;
-	case PPC64:
-                target = TARGET_PPC64;
-                target_CFLAGS = TARGET_CFLAGS_PPC64;
-                break;
-	case X86_64:
-                target = TARGET_X86_64;
-                target_CFLAGS = TARGET_CFLAGS_X86_64;
-                break;
-	case ARM:
-                target = TARGET_ARM;
-                if (target_data.host == X86) {
-                        target_CFLAGS = TARGET_CFLAGS_ARM_ON_X86;
-			gdb_conf_flags = GDB_TARGET_ARM_ON_X86;
-                } else if (target_data.host == X86_64) {
-                        target_CFLAGS = TARGET_CFLAGS_ARM_ON_X86_64;
-			gdb_conf_flags = GDB_TARGET_ARM_ON_X86_64;
-		} else
-                        target_CFLAGS = TARGET_CFLAGS_ARM;
-                break;
+	sprintf(target, "TARGET=%s", target_arch[target_data.target].target);
+	if (target_arch[target_data.target].host != NULL) {
+		sprintf(target_CFLAGS, "TARGET_CFLAGS=%s",
+			(target_arch[target_data.target].host->cflags) ?
+			target_arch[target_data.target].host->cflags :
+			"");
+		sprintf(gdb_conf_flags, "GDB_CONF_FLAGS=%s",
+			(target_arch[target_data.target].host->gdb_conf_flags)
+			? target_arch[target_data.target].host->gdb_conf_flags
+			: "");
+	} else {
+		sprintf(target_CFLAGS, "TARGET_CFLAGS=%s",
+			(target_arch[target_data.target].cflags) ?
+			target_arch[target_data.target].cflags : "");
+		sprintf(gdb_conf_flags, "GDB_CONF_FLAGS=%s",
+			(target_arch[target_data.target].gdb_conf_flags) ?
+			target_arch[target_data.target].gdb_conf_flags : "");
 	}
 
 	ldflags = get_extra_flags("LDFLAGS.extra");
@@ -1377,6 +1344,7 @@ set_initial_target(struct supported_gdb_version *sp)
 	FILE *fp;
 	char crash_target[512];
 	char buf[512];
+	int i;
 
 	target_data.initial_gdb_target = UNKNOWN;
 
@@ -1408,41 +1376,19 @@ set_initial_target(struct supported_gdb_version *sp)
 
 	fclose(fp);
 
-	if (strncmp(buf, "X86_64", strlen("X86_64")) == 0) 
-		target_data.initial_gdb_target = X86_64;
-	else if (strncmp(buf, "X86", strlen("X86")) == 0) 
-		target_data.initial_gdb_target = X86;
-	else if (strncmp(buf, "ALPHA", strlen("ALPHA")) == 0)
-		target_data.initial_gdb_target = ALPHA;
-	else if (strncmp(buf, "PPC64", strlen("PPC64")) == 0)
-		target_data.initial_gdb_target = PPC64;
-	else if (strncmp(buf, "PPC", strlen("PPC")) == 0)
-		target_data.initial_gdb_target = PPC;
-	else if (strncmp(buf, "IA64", strlen("IA64")) == 0)
-		target_data.initial_gdb_target = IA64;
-	else if (strncmp(buf, "S390X", strlen("S390X")) == 0)
-		target_data.initial_gdb_target = S390X;
-	else if (strncmp(buf, "S390", strlen("S390")) == 0)
-		target_data.initial_gdb_target = S390;
-	else if (strncmp(buf, "ARM", strlen("ARM")) == 0)
-		target_data.initial_gdb_target = ARM;
+	for (i = 0; i < sizeof(target_arch) / sizeof(struct target_table); i++)
+		if (strncmp(buf, target_arch[i].target,
+			    strlen(target_arch[i].target)) == 0) {
+			target_data.initial_gdb_target = i;
+			break;
+		}
 }
 
 char *
 target_to_name(int target)
 {
-	switch (target)
-	{
-	case X86:    return("X86");
-	case ALPHA:  return("ALPHA");
-	case PPC:    return("PPC");
-	case IA64:   return("IA64");
-	case S390:   return("S390");
-	case S390X:  return("S390X");
-	case PPC64:  return("PPC64");
-	case X86_64: return("X86_64");
-	case ARM:    return("ARM"); 
-	}
+	if (target < sizeof(target_arch) / sizeof(struct target_table))
+		return target_arch[target].target;
 
 	return "UNKNOWN";
 }
@@ -1450,42 +1396,16 @@ target_to_name(int target)
 int
 name_to_target(char *name)
 {
-	if (strncmp(name, "X86_64", strlen("X86_64")) == 0)
-                return X86_64;
-	else if (strncmp(name, "x86_64", strlen("x86_64")) == 0)
-                return X86_64;
-        else if (strncmp(name, "X86", strlen("X86")) == 0)
-                return X86;
-        else if (strncmp(name, "x86", strlen("x86")) == 0)
-                return X86;
-        else if (strncmp(name, "ALPHA", strlen("ALPHA")) == 0)
-                return ALPHA;
-        else if (strncmp(name, "alpha", strlen("alpha")) == 0)
-                return ALPHA;
-        else if (strncmp(name, "PPC64", strlen("PPC64")) == 0)
-                return PPC64;
-        else if (strncmp(name, "ppc64", strlen("ppc64")) == 0)
-                return PPC64;
-        else if (strncmp(name, "PPC", strlen("PPC")) == 0)
-                return PPC;
-        else if (strncmp(name, "ppc", strlen("ppc")) == 0)
-                return PPC;
-        else if (strncmp(name, "IA64", strlen("IA64")) == 0)
-                return IA64;
-        else if (strncmp(name, "ia64", strlen("ia64")) == 0)
-                return IA64;
-        else if (strncmp(name, "S390X", strlen("S390X")) == 0)
-                return S390X;
-        else if (strncmp(name, "s390x", strlen("s390x")) == 0)
-                return S390X;
-        else if (strncmp(name, "S390", strlen("S390")) == 0)
-                return S390;
-        else if (strncmp(name, "s390", strlen("s390")) == 0)
-                return S390;
-        else if (strncmp(name, "ARM", strlen("ARM")) == 0)
-                return ARM;
-        else if (strncmp(name, "arm", strlen("arm")) == 0)
-                return ARM;
+	int i;
+	char buf[128];
+
+	for (i = 0; i < sizeof(target_arch) / sizeof(struct target_table); i++)
+		if (target_arch[i].target &&
+		    (strncmp(name, target_arch[i].target,
+			strlen(target_arch[i].target)) == 0) ||
+		     strncmp(name, lower_case(target_arch[i].target, buf),
+			strlen(lower_case(target_arch[i].target, buf)) == 0))
+			return i;
 
 	return UNKNOWN;
 }
-- 
1.7.0.4


Date: Mon, 24 Oct 2011 18:14:10 +0900
Subject: [PATCH 2/4] Makefile: wrap cc, gcc and ar with common make variables

By this variables, cross-compiler can be adapted into crash build
and also, don't hurt existing build targets.

CC or AR must be guaranteed by cross environ.

A configure.c is still compiled with host native compiler
because this need to run before crash compile.

Signed-off-by: Toshikazu Nakayama <nakayama.ts@xxxxxxxxxxxxxx>
---
 Makefile            |  124 +++++++++++++++++++++++++++------------------------
 extensions/Makefile |    8 +++-
 extensions/sial.mk  |    6 ++-
 extensions/snap.mk  |    6 ++-
 4 files changed, 81 insertions(+), 63 deletions(-)

diff --git a/Makefile b/Makefile
index 6f63128..e7e468e 100644
--- a/Makefile
+++ b/Makefile
@@ -31,6 +31,12 @@ ifeq (${TARGET}, PPC64)
 CONF_FLAGS = -m64
 endif
 
+ifeq ($(CC), )
+CC = cc
+endif
+ifeq ($(AR), )
+AR = ar
+endif
 #
 # GDB, GDB_FILES, GDB_OFILES and GDB_PATCH_FILES will be configured automatically by configure 
 #
@@ -274,7 +280,7 @@ gdb_patch:
 		patch -p0 < ${GDB}.patch; fi
 
 library: make_build_data ${OBJECT_FILES}
-	ar -rs ${PROGRAM}lib.a ${OBJECT_FILES}
+	$(AR) -rs ${PROGRAM}lib.a ${OBJECT_FILES}
 
 gdb: force
 	rm -f ${GDB_OFILES}
@@ -297,7 +303,7 @@ do_clean:
 	@(cd memory_driver; make --no-print-directory -i clean)
 
 make_build_data: force
-	cc -c ${CRASH_CFLAGS} build_data.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} build_data.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 install:
 	/usr/bin/install ${PROGRAM} ${INSTALLDIR}
@@ -319,171 +325,171 @@ nowarn: make_configure
 	@make --no-print-directory gdb_merge
 
 main.o: ${GENERIC_HFILES} main.c
-	cc -c ${CRASH_CFLAGS} main.c ${WARNING_OPTIONS} ${WARNING_ERROR} 
+	$(CC) -c ${CRASH_CFLAGS} main.c ${WARNING_OPTIONS} ${WARNING_ERROR} 
 
 cmdline.o: ${GENERIC_HFILES} cmdline.c
-	cc -c ${CRASH_CFLAGS} cmdline.c -I${READLINE_DIRECTORY} ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} cmdline.c -I${READLINE_DIRECTORY} ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 tools.o: ${GENERIC_HFILES} tools.c
-	cc -c ${CRASH_CFLAGS} tools.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} tools.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 global_data.o: ${GENERIC_HFILES} global_data.c
-	cc -c ${CRASH_CFLAGS} global_data.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} global_data.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 symbols.o: ${GENERIC_HFILES} symbols.c
-	cc -c ${CRASH_CFLAGS} symbols.c -I${BFD_DIRECTORY} -I${GDB_INCLUDE_DIRECTORY} ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} symbols.c -I${BFD_DIRECTORY} -I${GDB_INCLUDE_DIRECTORY} ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 filesys.o: ${GENERIC_HFILES} filesys.c
-	cc -c ${CRASH_CFLAGS} filesys.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} filesys.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 help.o: ${GENERIC_HFILES} help.c
-	cc -c ${CRASH_CFLAGS} help.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} help.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 memory.o: ${GENERIC_HFILES} memory.c
-	cc -c ${CRASH_CFLAGS} memory.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} memory.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 test.o: ${GENERIC_HFILES} test.c
-	cc -c ${CRASH_CFLAGS} test.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} test.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 task.o: ${GENERIC_HFILES} task.c
-	cc -c ${CRASH_CFLAGS} task.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} task.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 kernel.o: ${GENERIC_HFILES} kernel.c
-	cc -c ${CRASH_CFLAGS} kernel.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} kernel.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 gdb_interface.o: ${GENERIC_HFILES} gdb_interface.c
-	cc -c ${CRASH_CFLAGS} gdb_interface.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} gdb_interface.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 va_server.o: ${MCORE_HFILES} va_server.c
-	cc -c ${CRASH_CFLAGS} va_server.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} va_server.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 va_server_v1.o: ${MCORE_HFILES} va_server_v1.c
-	cc -c ${CRASH_CFLAGS} va_server_v1.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} va_server_v1.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 lkcd_common.o: ${GENERIC_HFILES} ${LKCD_DUMP_HFILES} lkcd_common.c
-	cc -c ${CRASH_CFLAGS} lkcd_common.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} lkcd_common.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 lkcd_v1.o: ${GENERIC_HFILES} ${LKCD_DUMP_HFILES} lkcd_v1.c
-	cc -c ${CRASH_CFLAGS} lkcd_v1.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} lkcd_v1.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 lkcd_v2_v3.o: ${GENERIC_HFILES} ${LKCD_DUMP_HFILES} lkcd_v2_v3.c
-	cc -c ${CRASH_CFLAGS} lkcd_v2_v3.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} lkcd_v2_v3.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 lkcd_v5.o: ${GENERIC_HFILES} ${LKCD_DUMP_HFILES} lkcd_v5.c
-	cc -c ${CRASH_CFLAGS} lkcd_v5.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} lkcd_v5.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 lkcd_v7.o: ${GENERIC_HFILES} ${LKCD_DUMP_HFILES} lkcd_v7.c
-	cc -c ${CRASH_CFLAGS} lkcd_v7.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} lkcd_v7.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 lkcd_v8.o: ${GENERIC_HFILES} ${LKCD_DUMP_HFILES} lkcd_v8.c
-	cc -c ${CRASH_CFLAGS} lkcd_v8.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} lkcd_v8.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 net.o: ${GENERIC_HFILES} net.c
-	cc -c ${CRASH_CFLAGS} net.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} net.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 dev.o: ${GENERIC_HFILES} dev.c
-	cc -c ${CRASH_CFLAGS} dev.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} dev.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 # remote.c functionality has been deprecated
 remote.o: ${GENERIC_HFILES} remote.c
-	@cc -c ${CRASH_CFLAGS} remote.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} remote.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 remote_daemon.o: ${GENERIC_HFILES} remote.c
-	cc -c ${CRASH_CFLAGS} -DDAEMON remote.c -o remote_daemon.o ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} -DDAEMON remote.c -o remote_daemon.o ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 x86.o: ${GENERIC_HFILES} ${REDHAT_HFILES} x86.c
-	cc -c ${CRASH_CFLAGS} x86.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} x86.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 alpha.o: ${GENERIC_HFILES} alpha.c
-	cc -c ${CRASH_CFLAGS} alpha.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} alpha.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 ppc.o: ${GENERIC_HFILES} ppc.c
-	cc -c ${CRASH_CFLAGS} ppc.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} ppc.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 ia64.o: ${GENERIC_HFILES} ${REDHAT_HFILES} ia64.c
-	cc -c ${CRASH_CFLAGS} ia64.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} ia64.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 ppc64.o: ${GENERIC_HFILES} ppc64.c
-	cc -c ${CRASH_CFLAGS} ppc64.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} ppc64.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 x86_64.o: ${GENERIC_HFILES} ${REDHAT_HFILES} x86_64.c
-	cc -c ${CRASH_CFLAGS} x86_64.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} x86_64.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 arm.o: ${GENERIC_HFILES} ${REDHAT_HFILES} arm.c
-	cc -c ${CRASH_CFLAGS} arm.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} arm.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 s390.o: ${GENERIC_HFILES} ${IBM_HFILES} s390.c
-	cc -c ${CRASH_CFLAGS} s390.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} s390.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 s390x.o: ${GENERIC_HFILES} ${IBM_HFILES} s390x.c
-	cc -c ${CRASH_CFLAGS} s390x.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} s390x.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 s390dbf.o: ${GENERIC_HFILES} ${IBM_HFILES} s390dbf.c
-	cc -c ${CRASH_CFLAGS} s390dbf.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} s390dbf.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 s390_dump.o: ${GENERIC_HFILES} ${IBM_HFILES} s390_dump.c
-	cc -c ${CRASH_CFLAGS} s390_dump.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} s390_dump.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 netdump.o: ${GENERIC_HFILES} ${REDHAT_HFILES} netdump.c
-	cc -c ${CRASH_CFLAGS} netdump.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} netdump.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 netdump_daemon.o: ${GENERIC_HFILES} ${REDHAT_HFILES} netdump.c
-	cc -c ${CRASH_CFLAGS} -DDAEMON netdump.c -o netdump_daemon.o ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} -DDAEMON netdump.c -o netdump_daemon.o ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 diskdump.o: ${GENERIC_HFILES} ${REDHAT_HFILES} diskdump.c
-	cc -c ${CRASH_CFLAGS} diskdump.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} diskdump.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 makedumpfile.o: ${GENERIC_HFILES} ${REDHAT_HFILES} makedumpfile.c
-	cc -c ${CRASH_CFLAGS} makedumpfile.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} makedumpfile.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 xendump.o: ${GENERIC_HFILES} ${REDHAT_HFILES} xendump.c
-	cc -c ${CRASH_CFLAGS} xendump.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} xendump.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 kvmdump.o: ${GENERIC_HFILES} ${REDHAT_HFILES} kvmdump.c
-	cc -c ${CRASH_CFLAGS} kvmdump.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} kvmdump.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 qemu.o: ${GENERIC_HFILES} ${REDHAT_HFILES} qemu.c
-	cc -c ${CRASH_CFLAGS} qemu.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} qemu.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 qemu-load.o: ${GENERIC_HFILES} ${REDHAT_HFILES} qemu-load.c
-	cc -c ${CRASH_CFLAGS} qemu-load.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} qemu-load.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 sadump.o: ${GENERIC_HFILES} ${SADUMP_HFILES} sadump.c
-	cc -c ${CRASH_CFLAGS} sadump.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} sadump.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 extensions.o: ${GENERIC_HFILES} extensions.c
-	cc -c ${CRASH_CFLAGS} extensions.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} extensions.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 lkcd_x86_trace.o: ${GENERIC_HFILES} ${LKCD_TRACE_HFILES} lkcd_x86_trace.c 
-	cc -c ${CRASH_CFLAGS} lkcd_x86_trace.c -DREDHAT ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} lkcd_x86_trace.c -DREDHAT ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 unwind_x86_32_64.o: ${GENERIC_HFILES} ${UNWIND_HFILES} unwind_x86_32_64.c
-	cc -c ${CRASH_CFLAGS} unwind_x86_32_64.c -o unwind_x86_32_64.o ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} unwind_x86_32_64.c -o unwind_x86_32_64.o ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 unwind_arm.o: ${GENERIC_HFILES} ${UNWIND_HFILES} unwind_arm.c
-	cc -c ${CRASH_CFLAGS} unwind_arm.c -o unwind_arm.o ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} unwind_arm.c -o unwind_arm.o ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 unwind_v1.o: ${GENERIC_HFILES} ${UNWIND_HFILES} unwind.c unwind_decoder.c
-	cc -c ${CRASH_CFLAGS} unwind.c -DREDHAT -DUNWIND_V1 -o unwind_v1.o ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} unwind.c -DREDHAT -DUNWIND_V1 -o unwind_v1.o ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 unwind_v2.o: ${GENERIC_HFILES} ${UNWIND_HFILES} unwind.c unwind_decoder.c
-	cc -c ${CRASH_CFLAGS} unwind.c -DREDHAT -DUNWIND_V2 -o unwind_v2.o ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} unwind.c -DREDHAT -DUNWIND_V2 -o unwind_v2.o ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 unwind_v3.o: ${GENERIC_HFILES} ${UNWIND_HFILES} unwind.c unwind_decoder.c
-	cc -c ${CRASH_CFLAGS} unwind.c -DREDHAT -DUNWIND_V3 -o unwind_v3.o ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} unwind.c -DREDHAT -DUNWIND_V3 -o unwind_v3.o ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 lkcd_fix_mem.o: ${GENERIC_HFILES} ${LKCD_HFILES} lkcd_fix_mem.c
-	cc -c ${CRASH_CFLAGS} lkcd_fix_mem.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} lkcd_fix_mem.c -DMCLX ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 xen_hyper.o: ${GENERIC_HFILES} xen_hyper.c
-	cc -c ${CRASH_CFLAGS} xen_hyper.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} xen_hyper.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 xen_hyper_command.o: ${GENERIC_HFILES} xen_hyper_command.c
-	cc -c ${CRASH_CFLAGS} xen_hyper_command.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} xen_hyper_command.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 xen_hyper_global_data.o: ${GENERIC_HFILES} xen_hyper_global_data.c
-	cc -c ${CRASH_CFLAGS} xen_hyper_global_data.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} xen_hyper_global_data.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 xen_hyper_dump_tables.o: ${GENERIC_HFILES} xen_hyper_dump_tables.c
-	cc -c ${CRASH_CFLAGS} xen_hyper_dump_tables.c ${WARNING_OPTIONS} ${WARNING_ERROR}
+	$(CC) -c ${CRASH_CFLAGS} xen_hyper_dump_tables.c ${WARNING_OPTIONS} ${WARNING_ERROR}
 
 ${PROGRAM}: force
 	@make --no-print-directory all
@@ -499,7 +505,7 @@ ${PROGRAM}d: daemon_deprecated make_configure
 	@make --no-print-directory daemon 
 
 daemon: ${DAEMON_OBJECT_FILES}
-	cc ${LDFLAGS} -o ${PROGRAM}d ${DAEMON_OBJECT_FILES} build_data.o -lz 
+	$(CC) ${LDFLAGS} -o ${PROGRAM}d ${DAEMON_OBJECT_FILES} build_data.o -lz 
 
 files: make_configure
 	@./configure -q -b
diff --git a/extensions/Makefile b/extensions/Makefile
index 17d4668..e8442bd 100644
--- a/extensions/Makefile
+++ b/extensions/Makefile
@@ -24,6 +24,10 @@
 # and that makefile will be invoked. 
 # 
 
+ifeq ($(CC), )
+CC = gcc
+endif
+
 CONTRIB_SO := $(patsubst %.c,%.so,$(wildcard *.c))
 
 all: link_defs $(CONTRIB_SO)
@@ -36,8 +40,8 @@ $(CONTRIB_SO): %.so: %.c defs.h
 	@if [ -f $*.mk ]; then \
 		make -f $*.mk; \
 	else \
-		echo "gcc -Wall -nostartfiles -shared -rdynamic -o $@ $*.c -fPIC -D$(TARGET) $(TARGET_CFLAGS) $(GDB_FLAGS)"; \
-		gcc -Wall -nostartfiles -shared -rdynamic -o $@ $*.c -fPIC -D$(TARGET) $(TARGET_CFLAGS) $(GDB_FLAGS); \
+		echo "$(CC) -Wall -nostartfiles -shared -rdynamic -o $@ $*.c -fPIC -D$(TARGET) $(TARGET_CFLAGS) $(GDB_FLAGS)"; \
+		$(CC) -Wall -nostartfiles -shared -rdynamic -o $@ $*.c -fPIC -D$(TARGET) $(TARGET_CFLAGS) $(GDB_FLAGS); \
 	fi
 
 clean:
diff --git a/extensions/sial.mk b/extensions/sial.mk
index 8923786..c6d37ee 100644
--- a/extensions/sial.mk
+++ b/extensions/sial.mk
@@ -9,6 +9,10 @@
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 
+ifeq ($(CC), )
+CC = gcc
+endif
+
 TARGET_FLAGS = -D$(TARGET) $(TARGET_CFLAGS)
 
 all:
@@ -23,7 +27,7 @@ lib-sial:
 	cd libsial && make
         
 sial.so: ../defs.h sial.c lib-sial
-	gcc -g -I.. -Ilibsial -I../$(GDB)/bfd -I../$(GDB)/include -I../$(GDB)/gdb -I../$(GDB)/gdb/config -I../$(GDB)/gdb/common -I../$(GDB) -nostartfiles -shared -rdynamic -o sial.so sial.c -fPIC $(TARGET_FLAGS) $(GDB_FLAGS) -Llibsial -lsial 
+	$(CC) -g -I.. -Ilibsial -I../$(GDB)/bfd -I../$(GDB)/include -I../$(GDB)/gdb -I../$(GDB)/gdb/config -I../$(GDB)/gdb/common -I../$(GDB) -nostartfiles -shared -rdynamic -o sial.so sial.c -fPIC $(TARGET_FLAGS) $(GDB_FLAGS) -Llibsial -lsial 
 
 clean:
 	cd libsial && make clean
diff --git a/extensions/snap.mk b/extensions/snap.mk
index 8b48078..69df3e8 100644
--- a/extensions/snap.mk
+++ b/extensions/snap.mk
@@ -13,6 +13,10 @@
 # GNU General Public License for more details.
 #
 
+ifeq ($(CC), )
+CC = gcc
+endif
+
 ifeq ($(shell arch), i686)
   TARGET=X86
   TARGET_CFLAGS=-D_FILE_OFFSET_BITS=64
@@ -43,4 +47,4 @@ endif
 all: snap.so
 	
 snap.so: $(INCDIR)/defs.h snap.c 
-	gcc -Wall -I$(INCDIR) -nostartfiles -shared -rdynamic -o snap.so snap.c -fPIC -D$(TARGET) $(TARGET_CFLAGS) $(GDB_FLAGS)
+	$(CC) -Wall -I$(INCDIR) -nostartfiles -shared -rdynamic -o snap.so snap.c -fPIC -D$(TARGET) $(TARGET_CFLAGS) $(GDB_FLAGS)
-- 
1.7.0.4


Date: Thu, 19 Apr 2012 09:54:40 +0900
Subject: [PATCH 3/4] ppc: support x86 cross

Add more hosts of x86 in ppc[] which are used by cross compiler.

Signed-off-by: Toshikazu Nakayama <nakayama.ts@xxxxxxxxxxxxxx>
---
 configure.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/configure.c b/configure.c
index 63d3244..e5d2ce5 100755
--- a/configure.c
+++ b/configure.c
@@ -138,7 +138,19 @@ static struct host_table {
 		.host = PPC64,
 		.cflags = "-m32 -D_FILE_OFFSET_BITS=64 -fPIC",
 		.gdb_conf_flags = "--target=ppc-elf-linux CFLAGS=-m32",
-	}
+	},
+	{
+		.host = X86,
+		.cflags = "-D_FILE_OFFSET_BITS=64",
+		.gdb_conf_flags = "--host=i686-pc-linux-gnu "
+				  "--target=powerpc-elf-linux",
+	},
+	{
+		.host = X86_64,
+		.cflags = "-D_FILE_OFFSET_BITS=64",
+		.gdb_conf_flags = "--host=x86_64-pc-linux-gnu "
+				  "--target=powerpc-elf-linux",
+	},
 };
 
 static struct target_table {
-- 
1.7.0.4


Date: Tue, 17 Apr 2012 10:40:42 +0900
Subject: [PATCH 4/4] build_data: handle CC variable

Try getenv("CC") and if variable is set, do $(CC) --version instead of
gcc --version.

Signed-off-by: Toshikazu Nakayama <nakayama.ts@xxxxxxxxxxxxxx>
---
 configure.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/configure.c b/configure.c
index e5d2ce5..e4c4f3e 100755
--- a/configure.c
+++ b/configure.c
@@ -1095,9 +1095,10 @@ count_chars(char *s, char c)
 void
 make_build_data(char *target)
 {
-        char *p;
+        char *p, *gcc;
         char hostname[MAXSTRLEN];
 	char progname[MAXSTRLEN];
+	char gccname[MAXSTRLEN];
 	char inbuf1[MAXSTRLEN];
 	char inbuf2[MAXSTRLEN];
 	char inbuf3[MAXSTRLEN];
@@ -1107,7 +1108,13 @@ make_build_data(char *target)
 
         fp1 = popen("date", "r");
         fp2 = popen("id", "r");
-	fp3 = popen("gcc --version", "r");
+	gcc = getenv("CC");
+	if (gcc == NULL)
+		fp3 = popen("gcc --version", "r");
+	else {
+		sprintf(gccname, "%s --version", gcc);
+		fp3 = popen(gccname, "r");
+	}
 
 	if ((fp4 = fopen("build_data.c", "w")) == NULL) {
 		perror("build_data.c");
-- 
1.7.0.4


--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/crash-utility

[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux