On Wed, May 26, 2021 at 11:44 PM Dmitry Kozlyuk <dmitry.kozl...@gmail.com> wrote: > > Size of string constant symbol may be larger than its length > measured up to NUL terminator. In this case pmdinfogen included padding > bytes after NUL terminator in generated source, yielding incorrect code. > > Always trim string data to NUL terminator while reading ELF. > It was already done for COFF because there's no symbol size. > > Bugzilla ID: 720 > Fixes: f0f93a7adfee ("buildtools: use Python pmdinfogen") > > Signed-off-by: Dmitry Kozlyuk <dmitry.kozl...@gmail.com> > --- > buildtools/coff.py | 6 ------ > buildtools/pmdinfogen.py | 10 ++++++++-- > 2 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/buildtools/coff.py b/buildtools/coff.py > index 86fb0602b7..a7b6c37e32 100644 > --- a/buildtools/coff.py > +++ b/buildtools/coff.py > @@ -146,9 +146,3 @@ def get_section_data(self, number): > > def get_string(self, offset): > return decode_asciiz(self._strings[offset:]) ^^^^
coff.py still needs this helper. Caught in the lab: Traceback (most recent call last): File "../buildtools/pmdinfogen.py", line 280, in <module> main() File "../buildtools/pmdinfogen.py", line 275, in main drivers = load_drivers(image) File "../buildtools/pmdinfogen.py", line 208, in load_drivers for symbol in image.find_by_prefix("this_pmd_name"): File "../buildtools/pmdinfogen.py", line 108, in find_by_prefix if symbol.name.startswith(prefix): File "C:\Users\builder\jenkins\workspace\Windows-Compile-DPDK-Mingw64\dpdk\buildtools\coff.py", line 84, in name return decode_asciiz(bytes(self._coff.name.immediate)) NameError: name 'decode_asciiz' is not defined Traceback (most recent call last): File "../buildtools/gen-pmdinfo-cfile.py", line 20, in <module> subprocess.run(pmdinfogen + paths + [output], check=True) File "c:\python38\lib\subprocess.py", line 512, in run raise CalledProcessError(retcode, process.args, -- David Marchand