winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
March 2020
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
1 participants
996 discussions
Start a n
N
ew thread
Jacek Caban : dbghelp: Use local ELF program segment header declaration.
by Alexandre Julliard
31 Mar '20
31 Mar '20
Module: wine Branch: master Commit: 186d610442e1db009e40945fc4725c43ea8721ab URL:
https://source.winehq.org/git/wine.git/?a=commit;h=186d610442e1db009e40945f…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Mar 31 18:22:00 2020 +0200 dbghelp: Use local ELF program segment header declaration. Based on glibc. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dbghelp/elf_module.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c index 3a9af1d15d..01ba4528e0 100644 --- a/dlls/dbghelp/elf_module.c +++ b/dlls/dbghelp/elf_module.c @@ -470,7 +470,17 @@ static BOOL elf_map_file(struct elf_map_file_data* emfd, struct image_file_map* { if (fmap->addr_size == 32) { - Elf32_Phdr phdr; + struct + { + UINT32 p_type; /* Segment type */ + UINT32 p_offset; /* Segment file offset */ + UINT32 p_vaddr; /* Segment virtual address */ + UINT32 p_paddr; /* Segment physical address */ + UINT32 p_filesz; /* Segment size in file */ + UINT32 p_memsz; /* Segment size in memory */ + UINT32 p_flags; /* Segment flags */ + UINT32 p_align; /* Segment alignment */ + } phdr; if (elf_map_file_read(fmap, emfd, &phdr, sizeof(phdr), fmap->u.elf.elfhdr.e_phoff + i * sizeof(phdr)) && @@ -483,7 +493,17 @@ static BOOL elf_map_file(struct elf_map_file_data* emfd, struct image_file_map* } else { - Elf64_Phdr phdr; + struct + { + UINT32 p_type; /* Segment type */ + UINT32 p_flags; /* Segment flags */ + UINT64 p_offset; /* Segment file offset */ + UINT64 p_vaddr; /* Segment virtual address */ + UINT64 p_paddr; /* Segment physical address */ + UINT64 p_filesz; /* Segment size in file */ + UINT64 p_memsz; /* Segment size in memory */ + UINT64 p_align; /* Segment alignment */ + } phdr; if (elf_map_file_read(fmap, emfd, &phdr, sizeof(phdr), fmap->u.elf.elfhdr.e_phoff + i * sizeof(phdr)) &&
1
0
0
0
Jacek Caban : dbghelp: Use local elf_section_header declaration.
by Alexandre Julliard
31 Mar '20
31 Mar '20
Module: wine Branch: master Commit: a6f0fe8d1ca16243771784ec34c49453c96e6479 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=a6f0fe8d1ca16243771784ec…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Mar 31 18:21:51 2020 +0200 dbghelp: Use local elf_section_header declaration. Based on glibc. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dbghelp/elf_module.c | 18 +++++++++++++++--- dlls/dbghelp/image_private.h | 18 +++++++++++++++--- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c index cb30eb23d4..3a9af1d15d 100644 --- a/dlls/dbghelp/elf_module.c +++ b/dlls/dbghelp/elf_module.c @@ -322,10 +322,22 @@ static BOOL elf_map_shdr(struct elf_map_file_data* emfd, struct image_file_map* { if (fmap->addr_size == 32) { - Elf32_Shdr shdr32; + struct + { + UINT32 sh_name; /* Section name (string tbl index) */ + UINT32 sh_type; /* Section type */ + UINT32 sh_flags; /* Section flags */ + UINT32 sh_addr; /* Section virtual addr at execution */ + UINT32 sh_offset; /* Section file offset */ + UINT32 sh_size; /* Section size in bytes */ + UINT32 sh_link; /* Link to another section */ + UINT32 sh_info; /* Additional section information */ + UINT32 sh_addralign; /* Section alignment */ + UINT32 sh_entsize; /* Entry size if section holds table */ + } shdr32; if (!elf_map_file_read(fmap, emfd, &shdr32, sizeof(shdr32), - fmap->u.elf.elfhdr.e_shoff + i * sizeof(Elf32_Shdr))) + fmap->u.elf.elfhdr.e_shoff + i * sizeof(shdr32))) return FALSE; fmap->u.elf.sect[i].shdr.sh_name = shdr32.sh_name; @@ -342,7 +354,7 @@ static BOOL elf_map_shdr(struct elf_map_file_data* emfd, struct image_file_map* else { if (!elf_map_file_read(fmap, emfd, &fmap->u.elf.sect[i].shdr, sizeof(fmap->u.elf.sect[i].shdr), - fmap->u.elf.elfhdr.e_shoff + i * sizeof(Elf64_Shdr))) + fmap->u.elf.elfhdr.e_shoff + i * sizeof(fmap->u.elf.sect[i].shdr))) return FALSE; } return TRUE; diff --git a/dlls/dbghelp/image_private.h b/dlls/dbghelp/image_private.h index 600cf72159..8c6f463ecb 100644 --- a/dlls/dbghelp/image_private.h +++ b/dlls/dbghelp/image_private.h @@ -66,6 +66,20 @@ struct elf_header UINT16 e_shstrndx; /* Section header string table index */ }; +struct elf_section_header +{ + UINT32 sh_name; /* Section name (string tbl index) */ + UINT32 sh_type; /* Section type */ + UINT64 sh_flags; /* Section flags */ + UINT64 sh_addr; /* Section virtual addr at execution */ + UINT64 sh_offset; /* Section file offset */ + UINT64 sh_size; /* Section size in bytes */ + UINT32 sh_link; /* Link to another section */ + UINT32 sh_info; /* Additional section information */ + UINT64 sh_addralign; /* Section alignment */ + UINT64 sh_entsize; /* Entry size if section holds table */ +}; + /* structure holding information while handling an ELF image * allows one by one section mapping for memory savings */ @@ -85,13 +99,11 @@ struct image_file_map const char* shstrtab; char* target_copy; struct elf_header elfhdr; -#ifdef __ELF__ struct { - Elf64_Shdr shdr; + struct elf_section_header shdr; const char* mapped; }* sect; -#endif } elf; struct macho_file_map {
1
0
0
0
Jacek Caban : dbghelp: Use local elf_header declaration.
by Alexandre Julliard
31 Mar '20
31 Mar '20
Module: wine Branch: master Commit: 78845911da06fc75c6d74237f816a1547c24b20b URL:
https://source.winehq.org/git/wine.git/?a=commit;h=78845911da06fc75c6d74237…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Mar 31 18:21:37 2020 +0200 dbghelp: Use local elf_header declaration. Based on glibc. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dbghelp/elf_module.c | 22 +++++++++++++++++++--- dlls/dbghelp/image_private.h | 20 +++++++++++++++++++- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c index cca07ead31..cb30eb23d4 100644 --- a/dlls/dbghelp/elf_module.c +++ b/dlls/dbghelp/elf_module.c @@ -359,7 +359,7 @@ static BOOL elf_map_file(struct elf_map_file_data* emfd, struct image_file_map* unsigned int i; size_t tmp, page_mask = sysinfo.dwPageSize - 1; WCHAR *dos_path; - unsigned char e_ident[EI_NIDENT]; + unsigned char e_ident[ARRAY_SIZE(fmap->u.elf.elfhdr.e_ident)]; elf_reset_file_map(fmap); @@ -394,12 +394,28 @@ static BOOL elf_map_file(struct elf_map_file_data* emfd, struct image_file_map* if (fmap->addr_size == 32) { - Elf32_Ehdr elfhdr32; + struct + { + UINT8 e_ident[16]; /* Magic number and other info */ + UINT16 e_type; /* Object file type */ + UINT16 e_machine; /* Architecture */ + UINT32 e_version; /* Object file version */ + UINT32 e_entry; /* Entry point virtual address */ + UINT32 e_phoff; /* Program header table file offset */ + UINT32 e_shoff; /* Section header table file offset */ + UINT32 e_flags; /* Processor-specific flags */ + UINT16 e_ehsize; /* ELF header size in bytes */ + UINT16 e_phentsize; /* Program header table entry size */ + UINT16 e_phnum; /* Program header table entry count */ + UINT16 e_shentsize; /* Section header table entry size */ + UINT16 e_shnum; /* Section header table entry count */ + UINT16 e_shstrndx; /* Section header string table index */ + } elfhdr32; if (!elf_map_file_read(fmap, emfd, &elfhdr32, sizeof(elfhdr32), 0)) return FALSE; - memcpy(fmap->u.elf.elfhdr.e_ident, elfhdr32.e_ident, EI_NIDENT); + memcpy(fmap->u.elf.elfhdr.e_ident, elfhdr32.e_ident, sizeof(e_ident)); fmap->u.elf.elfhdr.e_type = elfhdr32.e_type; fmap->u.elf.elfhdr.e_machine = elfhdr32.e_machine; fmap->u.elf.elfhdr.e_version = elfhdr32.e_version; diff --git a/dlls/dbghelp/image_private.h b/dlls/dbghelp/image_private.h index d2a89bd7c5..600cf72159 100644 --- a/dlls/dbghelp/image_private.h +++ b/dlls/dbghelp/image_private.h @@ -48,6 +48,24 @@ #define IMAGE_NO_MAP ((void*)-1) +struct elf_header +{ + UINT8 e_ident[16]; /* Magic number and other info */ + UINT16 e_type; /* Object file type */ + UINT16 e_machine; /* Architecture */ + UINT32 e_version; /* Object file version */ + UINT64 e_entry; /* Entry point virtual address */ + UINT64 e_phoff; /* Program header table file offset */ + UINT64 e_shoff; /* Section header table file offset */ + UINT32 e_flags; /* Processor-specific flags */ + UINT16 e_ehsize; /* ELF header size in bytes */ + UINT16 e_phentsize; /* Program header table entry size */ + UINT16 e_phnum; /* Program header table entry count */ + UINT16 e_shentsize; /* Section header table entry size */ + UINT16 e_shnum; /* Section header table entry count */ + UINT16 e_shstrndx; /* Section header string table index */ +}; + /* structure holding information while handling an ELF image * allows one by one section mapping for memory savings */ @@ -66,8 +84,8 @@ struct image_file_map HANDLE handle; const char* shstrtab; char* target_copy; + struct elf_header elfhdr; #ifdef __ELF__ - Elf64_Ehdr elfhdr; struct { Elf64_Shdr shdr;
1
0
0
0
Jacek Caban : dbghelp: Use local declarations of r_debug and link_map structs.
by Alexandre Julliard
31 Mar '20
31 Mar '20
Module: wine Branch: master Commit: 11ea231501f4f2a54433031ada21052d81641fee URL:
https://source.winehq.org/git/wine.git/?a=commit;h=11ea231501f4f2a54433031a…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Mar 31 18:21:23 2020 +0200 dbghelp: Use local declarations of r_debug and link_map structs. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dbghelp/elf_module.c | 94 +++++++++++++++++++---------------------------- 1 file changed, 38 insertions(+), 56 deletions(-) diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c index 6bdbcdeb3e..cca07ead31 100644 --- a/dlls/dbghelp/elf_module.c +++ b/dlls/dbghelp/elf_module.c @@ -47,49 +47,6 @@ #define ELF_INFO_MODULE 0x0002 #define ELF_INFO_NAME 0x0004 -#ifndef HAVE_STRUCT_R_DEBUG -struct r_debug -{ - int r_version; - struct link_map *r_map; - ElfW(Addr) r_brk; - enum - { - RT_CONSISTENT, - RT_ADD, - RT_DELETE - } r_state; - ElfW(Addr) r_ldbase; -}; -#endif /* HAVE_STRUCT_R_DEBUG */ - -struct r_debug32 -{ - int r_version; - DWORD r_map; - Elf32_Addr r_brk; - int r_state; - Elf32_Addr r_ldbase; -}; - -#ifndef HAVE_STRUCT_LINK_MAP -struct link_map -{ - ElfW(Addr) l_addr; - char *l_name; - ElfW(Dyn) *l_ld; - struct link_map *l_next, *l_prev; -}; -#endif /* HAVE_STRUCT_LINK_MAP */ - -struct link_map32 -{ - Elf32_Addr l_addr; - DWORD l_name; - DWORD l_ld; - DWORD l_next, l_prev; -}; - WINE_DEFAULT_DEBUG_CHANNEL(dbghelp); struct elf_info @@ -1402,12 +1359,25 @@ static BOOL elf_enum_modules_internal(const struct process* pcs, { WCHAR bufstrW[MAX_PATH]; char bufstr[256]; - void *lm_addr; + ULONG_PTR lm_addr; if (pcs->is_64bit) { - struct r_debug dbg_hdr; - struct link_map lm; + struct + { + UINT32 r_version; + UINT64 r_map; + UINT64 r_brk; + UINT32 r_state; + UINT64 r_ldbase; + } dbg_hdr; + struct + { + UINT64 l_addr; + UINT64 l_name; + UINT64 l_ld; + UINT64 l_next, l_prev; + } lm; if (!pcs->dbg_hdr_addr || !ReadProcessMemory(pcs->handle, (void*)pcs->dbg_hdr_addr, @@ -1419,14 +1389,14 @@ static BOOL elf_enum_modules_internal(const struct process* pcs, * cases the first entry doesn't appear with a name, in other cases it * does. */ - for (lm_addr = (void*)dbg_hdr.r_map; lm_addr; lm_addr = (void*)lm.l_next) + for (lm_addr = dbg_hdr.r_map; lm_addr; lm_addr = lm.l_next) { - if (!ReadProcessMemory(pcs->handle, lm_addr, &lm, sizeof(lm), NULL)) + if (!ReadProcessMemory(pcs->handle, (void*)lm_addr, &lm, sizeof(lm), NULL)) return FALSE; - if (lm.l_prev != NULL && /* skip first entry, normally debuggee itself */ - lm.l_name != NULL && - ReadProcessMemory(pcs->handle, lm.l_name, bufstr, sizeof(bufstr), NULL)) + if (lm.l_prev && /* skip first entry, normally debuggee itself */ + lm.l_name && + ReadProcessMemory(pcs->handle, (void*)(ULONG_PTR)lm.l_name, bufstr, sizeof(bufstr), NULL)) { bufstr[sizeof(bufstr) - 1] = '\0'; MultiByteToWideChar(CP_UNIXCP, 0, bufstr, -1, bufstrW, ARRAY_SIZE(bufstrW)); @@ -1438,8 +1408,21 @@ static BOOL elf_enum_modules_internal(const struct process* pcs, } else { - struct r_debug32 dbg_hdr; - struct link_map32 lm; + struct + { + UINT32 r_version; + UINT32 r_map; + UINT32 r_brk; + UINT32 r_state; + UINT32 r_ldbase; + } dbg_hdr; + struct + { + UINT32 l_addr; + UINT32 l_name; + UINT32 l_ld; + UINT32 l_next, l_prev; + } lm; if (!pcs->dbg_hdr_addr || !ReadProcessMemory(pcs->handle, (void*)pcs->dbg_hdr_addr, @@ -1451,10 +1434,9 @@ static BOOL elf_enum_modules_internal(const struct process* pcs, * cases the first entry doesn't appear with a name, in other cases it * does. */ - for (lm_addr = (void *)(DWORD_PTR)dbg_hdr.r_map; lm_addr; - lm_addr = (void *)(DWORD_PTR)lm.l_next) + for (lm_addr = dbg_hdr.r_map; lm_addr; lm_addr = lm.l_next) { - if (!ReadProcessMemory(pcs->handle, lm_addr, &lm, sizeof(lm), NULL)) + if (!ReadProcessMemory(pcs->handle, (void*)lm_addr, &lm, sizeof(lm), NULL)) return FALSE; if (lm.l_prev && /* skip first entry, normally debuggee itself */
1
0
0
0
Jacek Caban : dbghelp: Use local AT_SYSINFO_EHDR definition.
by Alexandre Julliard
31 Mar '20
31 Mar '20
Module: wine Branch: master Commit: 620019fd71fd519470b4d624949a74fba9f350e9 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=620019fd71fd519470b4d624…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Mar 31 18:21:05 2020 +0200 dbghelp: Use local AT_SYSINFO_EHDR definition. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dbghelp/elf_module.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c index 4019bcf777..6bdbcdeb3e 100644 --- a/dlls/dbghelp/elf_module.c +++ b/dlls/dbghelp/elf_module.c @@ -124,6 +124,8 @@ struct elf_module_info struct image_file_map file_map; }; +#define ELF_AT_SYSINFO_EHDR 33 + /****************************************************************** * elf_map_section * @@ -1269,7 +1271,6 @@ static BOOL elf_load_file_cb(void *param, HANDLE handle, const WCHAR *filename) return elf_load_file(load_file->process, filename, load_file->load_offset, load_file->dyn_addr, load_file->elf_info); } -#ifdef AT_SYSINFO_EHDR /****************************************************************** * elf_search_auxv * @@ -1279,9 +1280,9 @@ static BOOL elf_search_auxv(const struct process* pcs, unsigned type, ULONG_PTR* { char buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME]; SYMBOL_INFO*si = (SYMBOL_INFO*)buffer; - void* addr; - void* str; - void* str_max; + BYTE* addr; + BYTE* str; + BYTE* str_max; si->SizeOfStruct = sizeof(*si); si->MaxNameLen = MAX_SYM_NAME; @@ -1309,36 +1310,43 @@ static BOOL elf_search_auxv(const struct process* pcs, unsigned type, ULONG_PTR* if (pcs->is_64bit) { - Elf64_auxv_t auxv; + struct + { + UINT64 a_type; + UINT64 a_val; + } auxv; while (ReadProcessMemory(pcs->handle, addr, &auxv, sizeof(auxv), NULL) && auxv.a_type) { if (auxv.a_type == type) { - *val = auxv.a_un.a_val; + *val = auxv.a_val; return TRUE; } - addr = (void*)((DWORD_PTR)addr + sizeof(auxv)); + addr += sizeof(auxv); } } else { - Elf32_auxv_t auxv; + struct + { + UINT32 a_type; + UINT32 a_val; + } auxv; while (ReadProcessMemory(pcs->handle, addr, &auxv, sizeof(auxv), NULL) && auxv.a_type) { if (auxv.a_type == type) { - *val = auxv.a_un.a_val; + *val = auxv.a_val; return TRUE; } - addr = (void*)((DWORD_PTR)addr + sizeof(auxv)); + addr += sizeof(auxv); } } return FALSE; } -#endif /****************************************************************** * elf_search_and_load_file @@ -1463,18 +1471,16 @@ static BOOL elf_enum_modules_internal(const struct process* pcs, } } -#ifdef AT_SYSINFO_EHDR if (!lm_addr) { ULONG_PTR ehdr_addr; - if (elf_search_auxv(pcs, AT_SYSINFO_EHDR, &ehdr_addr)) + if (elf_search_auxv(pcs, ELF_AT_SYSINFO_EHDR, &ehdr_addr)) { static const WCHAR vdsoW[] = {'[','v','d','s','o',']','.','s','o',0}; cb(vdsoW, ehdr_addr, 0, TRUE, user); } } -#endif return TRUE; }
1
0
0
0
Jacek Caban : dbghelp: Don't use *_NULL constants.
by Alexandre Julliard
31 Mar '20
31 Mar '20
Module: wine Branch: master Commit: ee34cf365d34b23669c2ead03b040f09b7fb1e2b URL:
https://source.winehq.org/git/wine.git/?a=commit;h=ee34cf365d34b23669c2ead0…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Mar 31 18:20:49 2020 +0200 dbghelp: Don't use *_NULL constants. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dbghelp/elf_module.c | 12 ++++++------ dlls/dbghelp/image_private.h | 6 ------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c index 196ebcaded..4019bcf777 100644 --- a/dlls/dbghelp/elf_module.c +++ b/dlls/dbghelp/elf_module.c @@ -1116,8 +1116,8 @@ static BOOL elf_load_file_from_fmap(struct process* pcs, const WCHAR* filename, break; } ptr += sizeof(dyn); - } while (dyn.d_tag != DT_NULL); - if (dyn.d_tag == DT_NULL) return ret; + } while (dyn.d_tag); + if (!dyn.d_tag) return ret; } else { @@ -1138,8 +1138,8 @@ static BOOL elf_load_file_from_fmap(struct process* pcs, const WCHAR* filename, break; } ptr += sizeof(dyn); - } while (dyn.d_tag != DT_NULL); - if (dyn.d_tag == DT_NULL) return ret; + } while (dyn.d_tag); + if (!dyn.d_tag) return ret; } } elf_end_find(fmap); @@ -1311,7 +1311,7 @@ static BOOL elf_search_auxv(const struct process* pcs, unsigned type, ULONG_PTR* { Elf64_auxv_t auxv; - while (ReadProcessMemory(pcs->handle, addr, &auxv, sizeof(auxv), NULL) && auxv.a_type != AT_NULL) + while (ReadProcessMemory(pcs->handle, addr, &auxv, sizeof(auxv), NULL) && auxv.a_type) { if (auxv.a_type == type) { @@ -1325,7 +1325,7 @@ static BOOL elf_search_auxv(const struct process* pcs, unsigned type, ULONG_PTR* { Elf32_auxv_t auxv; - while (ReadProcessMemory(pcs->handle, addr, &auxv, sizeof(auxv), NULL) && auxv.a_type != AT_NULL) + while (ReadProcessMemory(pcs->handle, addr, &auxv, sizeof(auxv), NULL) && auxv.a_type) { if (auxv.a_type == type) { diff --git a/dlls/dbghelp/image_private.h b/dlls/dbghelp/image_private.h index cd15146a36..d2a89bd7c5 100644 --- a/dlls/dbghelp/image_private.h +++ b/dlls/dbghelp/image_private.h @@ -48,12 +48,6 @@ #define IMAGE_NO_MAP ((void*)-1) -#ifndef __ELF__ -#ifndef SHT_NULL -#define SHT_NULL 0 -#endif -#endif - /* structure holding information while handling an ELF image * allows one by one section mapping for memory savings */
1
0
0
0
Jacek Caban : dbghelp: Use local NOTE_GNU_BUILD_ID declaration.
by Alexandre Julliard
31 Mar '20
31 Mar '20
Module: wine Branch: master Commit: 2534c2a2d22d3c610ffdfbb6b33e0b5176509aa1 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=2534c2a2d22d3c610ffdfbb6…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Mar 31 18:20:37 2020 +0200 dbghelp: Use local NOTE_GNU_BUILD_ID declaration. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dbghelp/elf_module.c | 4 ---- dlls/dbghelp/image_private.h | 4 ---- dlls/dbghelp/module.c | 6 ++++-- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c index 50f19bc79a..196ebcaded 100644 --- a/dlls/dbghelp/elf_module.c +++ b/dlls/dbghelp/elf_module.c @@ -47,10 +47,6 @@ #define ELF_INFO_MODULE 0x0002 #define ELF_INFO_NAME 0x0004 -#ifndef NT_GNU_BUILD_ID -#define NT_GNU_BUILD_ID 3 -#endif - #ifndef HAVE_STRUCT_R_DEBUG struct r_debug { diff --git a/dlls/dbghelp/image_private.h b/dlls/dbghelp/image_private.h index 13af7524fe..cd15146a36 100644 --- a/dlls/dbghelp/image_private.h +++ b/dlls/dbghelp/image_private.h @@ -54,10 +54,6 @@ #endif #endif -#ifndef NT_GNU_BUILD_ID -#define NT_GNU_BUILD_ID 3 -#endif - /* structure holding information while handling an ELF image * allows one by one section mapping for memory savings */ diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c index 03bbb1641e..bf7f105bf0 100644 --- a/dlls/dbghelp/module.c +++ b/dlls/dbghelp/module.c @@ -34,6 +34,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(dbghelp); +#define NOTE_GNU_BUILD_ID 3 + const WCHAR S_ElfW[] = {'<','e','l','f','>','\0'}; const WCHAR S_WineLoaderW[] = {'<','w','i','n','e','-','l','o','a','d','e','r','>','\0'}; static const WCHAR S_DotSoW[] = {'.','s','o','\0'}; @@ -640,7 +642,7 @@ static BOOL image_locate_build_id_target(struct image_file_map* fmap, const BYTE if (note != IMAGE_NO_MAP) { /* the usual ELF note structure: name-size desc-size type <name> <desc> */ - if (note[2] == NT_GNU_BUILD_ID) + if (note[2] == NOTE_GNU_BUILD_ID) { if (note[1] == idlen && !memcmp(note + 3 + ((note[0] + 3) >> 2), idend - idlen, idlen)) @@ -686,7 +688,7 @@ BOOL image_check_alternate(struct image_file_map* fmap, const struct module* mod if (note != IMAGE_NO_MAP) { /* the usual ELF note structure: name-size desc-size type <name> <desc> */ - if (note[2] == NT_GNU_BUILD_ID) + if (note[2] == NOTE_GNU_BUILD_ID) { ret = image_locate_build_id_target(fmap, (const BYTE*)(note + 3 + ((note[0] + 3) >> 2)), note[1]); }
1
0
0
0
Rémi Bernon : winedbg: Cleanup return for kill and status packets.
by Alexandre Julliard
31 Mar '20
31 Mar '20
Module: wine Branch: master Commit: eba6b38ba3665eb164ee0d6c301cc57d54ae1a4d URL:
https://source.winehq.org/git/wine.git/?a=commit;h=eba6b38ba3665eb164ee0d6c…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Tue Mar 31 15:12:31 2020 +0200 winedbg: Cleanup return for kill and status packets. There's a special packet_last_f flag to indicate we should quit, use that on kill packet instead of exiting abruptly. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/winedbg/gdbproxy.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/programs/winedbg/gdbproxy.c b/programs/winedbg/gdbproxy.c index a9f9210f52..02522ea319 100644 --- a/programs/winedbg/gdbproxy.c +++ b/programs/winedbg/gdbproxy.c @@ -814,15 +814,12 @@ static inline void packet_reply_register_hex_to(struct gdb_context* gdbctx, unsi static enum packet_return packet_reply_status(struct gdb_context* gdbctx) { - enum packet_return ret = packet_done; - - packet_reply_open(gdbctx); - if (gdbctx->process != NULL) { unsigned char sig; unsigned i; + packet_reply_open(gdbctx); packet_reply_add(gdbctx, "T"); sig = gdbctx->last_sig; packet_reply_val(gdbctx, sig, 1); @@ -840,19 +837,17 @@ static enum packet_return packet_reply_status(struct gdb_context* gdbctx) packet_reply_register_hex_to(gdbctx, i); packet_reply_add(gdbctx, ";"); } + + packet_reply_close(gdbctx); + return packet_done; } else { /* Try to put an exit code * Cannot use GetExitCodeProcess, wouldn't fit in a 8 bit value, so * just indicate the end of process and exit */ - packet_reply_add(gdbctx, "W00"); - /*if (!gdbctx->extended)*/ ret |= packet_last_f; + return packet_reply(gdbctx, "W00") | packet_last_f; } - - packet_reply_close(gdbctx); - - return ret; } #if 0 @@ -1159,10 +1154,7 @@ static enum packet_return packet_kill(struct gdb_context* gdbctx) if (!gdbctx->extended) /* dunno whether GDB cares or not */ #endif - wait(NULL); - exit(0); - /* assume we can't really answer something here */ - /* return packet_done; */ + return packet_ok | packet_last_f; } static enum packet_return packet_thread(struct gdb_context* gdbctx)
1
0
0
0
Rémi Bernon : winedbg: Explicitly handle MustReplyEmpty packet.
by Alexandre Julliard
31 Mar '20
31 Mar '20
Module: wine Branch: master Commit: 6deb5895d942adef0b19a8e2d083976f8f55da13 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=6deb5895d942adef0b19a8e2…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Tue Mar 31 15:12:30 2020 +0200 winedbg: Explicitly handle MustReplyEmpty packet. We now always print a warning when packet_error is returned. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/winedbg/gdbproxy.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/programs/winedbg/gdbproxy.c b/programs/winedbg/gdbproxy.c index 5e9e274beb..a9f9210f52 100644 --- a/programs/winedbg/gdbproxy.c +++ b/programs/winedbg/gdbproxy.c @@ -1070,8 +1070,9 @@ static enum packet_return packet_verbose(struct gdb_context* gdbctx) return packet_verbose_cont(gdbctx); } - WARN("Unhandled verbose packet %s\n", - debugstr_an(gdbctx->in_packet, gdbctx->in_packet_len)); + if (gdbctx->in_packet_len == 14 && !memcmp(gdbctx->in_packet, "MustReplyEmpty", 14)) + return packet_reply(gdbctx, ""); + return packet_error; }
1
0
0
0
Rémi Bernon : winedbg: Support QStartNoAckMode to reduce verbosity.
by Alexandre Julliard
31 Mar '20
31 Mar '20
Module: wine Branch: master Commit: 83284dbad4c5702e6d3551ea548346cc5e217ee4 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=83284dbad4c5702e6d3551ea…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Tue Mar 31 15:12:29 2020 +0200 winedbg: Support QStartNoAckMode to reduce verbosity. We don't have to validate and acknowledge the packets as long as this mode is enabled, this will reduce verbosity especially when tracing. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- programs/winedbg/gdbproxy.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/programs/winedbg/gdbproxy.c b/programs/winedbg/gdbproxy.c index 211d39edd5..5e9e274beb 100644 --- a/programs/winedbg/gdbproxy.c +++ b/programs/winedbg/gdbproxy.c @@ -94,6 +94,7 @@ struct gdb_context struct dbg_process* process; /* Unix environment */ unsigned long wine_segs[3]; /* load addresses of the ELF wine exec segments (text, bss and data) */ + BOOL no_ack_mode; }; static BOOL tgt_process_gdbproxy_read(HANDLE hProcess, const void* addr, @@ -1614,15 +1615,11 @@ static enum packet_return packet_query(struct gdb_context* gdbctx) return packet_ok; if (strncmp(gdbctx->in_packet, "Supported", 9) == 0) { - if (*target_xml) - return packet_reply(gdbctx, "PacketSize=400;qXfer:features:read+"); - else - { - /* no features supported */ - packet_reply_open(gdbctx); - packet_reply_close(gdbctx); - return packet_done; - } + packet_reply_open(gdbctx); + packet_reply_add(gdbctx, "QStartNoAckMode+;"); + if (*target_xml) packet_reply_add(gdbctx, "PacketSize=400;qXfer:features:read+"); + packet_reply_close(gdbctx); + return packet_done; } break; case 'T': @@ -1659,6 +1656,17 @@ static enum packet_return packet_query(struct gdb_context* gdbctx) return packet_error; } +static enum packet_return packet_set(struct gdb_context* gdbctx) +{ + if (strncmp(gdbctx->in_packet, "StartNoAckMode", 14) == 0) + { + gdbctx->no_ack_mode = TRUE; + return packet_ok; + } + + return packet_error; +} + static enum packet_return packet_step(struct gdb_context* gdbctx) { /* FIXME: add support for address in packet */ @@ -1736,7 +1744,7 @@ static struct packet_entry packet_entries[] = {'p', packet_read_register}, {'P', packet_write_register}, {'q', packet_query}, - /* {'Q', packet_set}, */ + {'Q', packet_set}, /* {'R', packet,restart}, only in extended mode ! */ {'s', packet_step}, /*{'S', packet_step_signal}, hard(er) to implement */ @@ -1757,7 +1765,8 @@ static BOOL extract_packets(struct gdb_context* gdbctx) * end points to the end of the received data buffer */ - while ((ptr = memchr(sum, '$', end - sum)) && + while (!gdbctx->no_ack_mode && + (ptr = memchr(sum, '$', end - sum)) && (sum = memchr(ptr, '#', end - ptr)) && (end - sum >= 3) && sscanf(sum, "#%02x", &cksum) == 1) { @@ -1998,6 +2007,7 @@ static BOOL gdb_init_context(struct gdb_context* gdbctx, unsigned flags, unsigne gdbctx->last_sig = 0; gdbctx->in_trap = FALSE; gdbctx->process = NULL; + gdbctx->no_ack_mode = FALSE; for (i = 0; i < ARRAY_SIZE(gdbctx->wine_segs); i++) gdbctx->wine_segs[i] = 0;
1
0
0
0
← Newer
1
2
3
4
5
...
100
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Results per page:
10
25
50
100
200