mirror of
https://github.com/dlang/dmd.git
synced 2025-04-29 14:40:12 +03:00
Merge pull request #7253 from rainers/lazy_debugS
fix issue 17944: MSCOFF: do not write empty debug$S section merged-on-behalf-of: Walter Bright <WalterBright@users.noreply.github.com>
This commit is contained in:
commit
775fce733b
1 changed files with 12 additions and 12 deletions
|
@ -338,6 +338,7 @@ MsCoffObj *MsCoffObj::init(Outbuffer *objbuf, const char *filename, const char *
|
||||||
|
|
||||||
segidx_pdata = UNKNOWN;
|
segidx_pdata = UNKNOWN;
|
||||||
segidx_xdata = UNKNOWN;
|
segidx_xdata = UNKNOWN;
|
||||||
|
segidx_debugS = UNKNOWN;
|
||||||
|
|
||||||
// Initialize buffers
|
// Initialize buffers
|
||||||
|
|
||||||
|
@ -381,10 +382,6 @@ MsCoffObj *MsCoffObj::init(Outbuffer *objbuf, const char *filename, const char *
|
||||||
|
|
||||||
int alignText = I64 ? IMAGE_SCN_ALIGN_16BYTES : IMAGE_SCN_ALIGN_8BYTES;
|
int alignText = I64 ? IMAGE_SCN_ALIGN_16BYTES : IMAGE_SCN_ALIGN_8BYTES;
|
||||||
int alignData = IMAGE_SCN_ALIGN_16BYTES;
|
int alignData = IMAGE_SCN_ALIGN_16BYTES;
|
||||||
addScnhdr(".debug$S", IMAGE_SCN_CNT_INITIALIZED_DATA |
|
|
||||||
IMAGE_SCN_ALIGN_1BYTES |
|
|
||||||
IMAGE_SCN_MEM_READ |
|
|
||||||
IMAGE_SCN_MEM_DISCARDABLE);
|
|
||||||
addScnhdr(".data$B", IMAGE_SCN_CNT_INITIALIZED_DATA |
|
addScnhdr(".data$B", IMAGE_SCN_CNT_INITIALIZED_DATA |
|
||||||
alignData |
|
alignData |
|
||||||
IMAGE_SCN_MEM_READ |
|
IMAGE_SCN_MEM_READ |
|
||||||
|
@ -403,11 +400,10 @@ MsCoffObj *MsCoffObj::init(Outbuffer *objbuf, const char *filename, const char *
|
||||||
|
|
||||||
seg_count = 0;
|
seg_count = 0;
|
||||||
|
|
||||||
#define SHI_DEBUGS 1
|
#define SHI_DATA 1
|
||||||
#define SHI_DATA 2
|
#define SHI_TEXT 2
|
||||||
#define SHI_TEXT 3
|
#define SHI_UDATA 3
|
||||||
#define SHI_UDATA 4
|
#define SHI_CDATA 4
|
||||||
#define SHI_CDATA 5
|
|
||||||
|
|
||||||
getsegment2(SHI_TEXT);
|
getsegment2(SHI_TEXT);
|
||||||
assert(SegData[CODE]->SDseg == CODE);
|
assert(SegData[CODE]->SDseg == CODE);
|
||||||
|
@ -421,8 +417,6 @@ MsCoffObj *MsCoffObj::init(Outbuffer *objbuf, const char *filename, const char *
|
||||||
getsegment2(SHI_UDATA);
|
getsegment2(SHI_UDATA);
|
||||||
assert(SegData[UDATA]->SDseg == UDATA);
|
assert(SegData[UDATA]->SDseg == UDATA);
|
||||||
|
|
||||||
segidx_debugS = getsegment2(SHI_DEBUGS);
|
|
||||||
|
|
||||||
if (config.fulltypes)
|
if (config.fulltypes)
|
||||||
cv8_initfile(filename);
|
cv8_initfile(filename);
|
||||||
assert(objbuf->size() == 0);
|
assert(objbuf->size() == 0);
|
||||||
|
@ -1631,7 +1625,13 @@ segidx_t MsCoffObj::seg_xdata_comdat(symbol *sfunc)
|
||||||
|
|
||||||
segidx_t MsCoffObj::seg_debugS()
|
segidx_t MsCoffObj::seg_debugS()
|
||||||
{
|
{
|
||||||
// Probably should generate this lazilly, too.
|
if (segidx_debugS == UNKNOWN)
|
||||||
|
{
|
||||||
|
segidx_debugS = MsCoffObj::getsegment(".debug$S", IMAGE_SCN_CNT_INITIALIZED_DATA |
|
||||||
|
IMAGE_SCN_ALIGN_1BYTES |
|
||||||
|
IMAGE_SCN_MEM_READ |
|
||||||
|
IMAGE_SCN_MEM_DISCARDABLE);
|
||||||
|
}
|
||||||
return segidx_debugS;
|
return segidx_debugS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue