From 7999c7b9c6f1806c4c99476651967dfba32673c4 Mon Sep 17 00:00:00 2001 From: midipix Date: Wed, 25 Oct 2017 23:31:46 -0400 Subject: driver: if --machine is unspecified, match the PE host or cross-target bits. --- src/driver/mdso_driver_ctx.c | 15 +++++++++++++++ src/internal/mdso_driver_impl.h | 12 ++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/driver/mdso_driver_ctx.c b/src/driver/mdso_driver_ctx.c index 75e44c8..9803391 100644 --- a/src/driver/mdso_driver_ctx.c +++ b/src/driver/mdso_driver_ctx.c @@ -159,6 +159,7 @@ int mdso_get_driver_ctx( const struct argv_option * optv[MDSO_OPTV_ELEMENTS]; struct argv_meta * meta; struct argv_entry * entry; + struct argv_entry * machine; size_t nunits; const char * program; const char * pretty; @@ -177,6 +178,7 @@ int mdso_get_driver_ctx( /* cctx init, option defaults */ memset(&cctx,0,sizeof(cctx)); + machine = 0; nunits = 0; pretty = 0; implib = 0; @@ -211,6 +213,8 @@ int mdso_get_driver_ctx( break; case TAG_QUAD_PTR: + machine = entry; + if (!(strcmp(entry->arg,"64"))) cctx.drvflags |= MDSO_DRIVER_QUAD_PTR; else @@ -250,6 +254,17 @@ int mdso_get_driver_ctx( nunits++; } + + if (!machine && MDSO_DRIVER_PE_HOST && (sizeof(size_t) == 8)) + cctx.drvflags |= MDSO_DRIVER_QUAD_PTR; + + else if (!machine && MDSO_DRIVER_WINNT_HOST && (sizeof(size_t) == 8)) + cctx.drvflags |= MDSO_DRIVER_QUAD_PTR; + + else if (!machine && strstr(program,"64")) + cctx.drvflags |= MDSO_DRIVER_QUAD_PTR; + + if (!nunits && !(cctx.drvflags & MDSO_DRIVER_VERSION)) return mdso_driver_usage(program,0,optv,meta); diff --git a/src/internal/mdso_driver_impl.h b/src/internal/mdso_driver_impl.h index dc658af..cfc1bc5 100644 --- a/src/internal/mdso_driver_impl.h +++ b/src/internal/mdso_driver_impl.h @@ -8,6 +8,18 @@ #include #include "argv/argv.h" +#ifdef __PE_ +#define MDSO_DRIVER_PE_HOST (1) +#else +#define MDSO_DRIVER_PE_HOST (0) +#endif + +#ifdef __WINNT__ +#define MDSO_DRIVER_WINNT_HOST (1) +#else +#define MDSO_DRIVER_WINNT_HOST (0) +#endif + #define MDSO_OPTV_ELEMENTS 64 extern const struct argv_option mdso_default_options[]; -- cgit v1.2.3