History log of /pciutils/lib/libpci.ver (Results 1 – 16 of 16)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: v3.14.0, v3.13.0
# ef78f397 30-May-2024 Martin Mares <[email protected]>

ABI version bump for pci_fill_info()

We have new flags and new fields in struct pci_dev.


Revision tags: v3.12.0, v3.11.1, v3.11.0, v3.10.0, v3.9.0
# 32934d5b 08-May-2022 Pali Rohár <[email protected]>

libpci: Add support for building versioned shared Windows DLL library libpci3.dll

PE/COFF format, used by DLL libraries, does not support version symbols
like ELF format. Recommendation from Microso

libpci: Add support for building versioned shared Windows DLL library libpci3.dll

PE/COFF format, used by DLL libraries, does not support version symbols
like ELF format. Recommendation from Microsoft for DLL symbol versioning is
to use DLL API sets. But DLL API sets scheme requires for every API change
to generated a new slim forwarding DLL library, which is unsuitable for
distribution which wants just one DLL library with all version symbols.

So instead of Microsoft recommended scheme for DLL versioning, use new
different versioning scheme: Symbol is composed by function name, at (@)
character and version string (version is same as for ELF targets). Symbol
name without version information is added only into the DLL DEF file as
alias to symbol with higest version. So linker at application link time
resolves "unversioned" symbol to the versioned one via this alias and puts
"versioned" symbol into final executable. This works fine if GNU LD is
linking application via import library libpci3.dll.a generated from that
DLL DEF file libpci3.def. But does not work when linking directly to the
DLL library because library itself does not contain aliases. Note that GNU
LD does not support linking to DEF file (it is required to first generated
import library from DEF file).

Note that older GNU LD versions have bug which cause generation of
corrupted DLL files if some symbol contains dot (.) character. Hopefully
this bug was fixed in GNU LD 2.21.

At the end application lspci.exe requires library libpci3.dll with symbols
pci_alloc@LIBPCI_3.0, pci_init@LIBPCI_3.5, pci_fill_info@LIBPCI_3.8 and
therefore libpci3.dll stays backward compatible with future changes.

PE/COFF executables can reference symbols either via name or via its
ordinal number. Because DLL DEF files are generated from libpci version
script and generator ver2def.pl preserves order of symbols, it means that
ordinal numbers stay backward compatible unless order of lines in version
script is changed.

WARNINGS:

GCC an GNU LD for Windows target have some bugs which cause that
-fvisibility=hidden switch and __attribute__((visibility("default"))) does
not work. Seems that they are broken and ignored when building DLL library.
So instead use -Wl,--exclude-all-symbols switch with explicit DLL DEF file
for building DLL library, which seems to work. This switch is supported
since GNU LD 2.21.

GNU LD has also another bug which results in broken DLL library if input
DLL DEF file which describes symbols for exports, contains also symbol
aliases via == operator.

So do not specify symbol aliases in input DLL DEF file for building DLL
library. Instead construct separate DLL DEF file for building libpci3.dll
without symbol aliases and separate DLL DEF file libpci3.def with symbol
aliases for building import library libpci3.dll.a suitable for linking into
target applications. Note that operator == for symbol aliases is supported
since GNU dlltool 2.21.

Generate those two DLL DEF files via new script ver2def.pl from libpci.ver
version script. So exported functions and version symbols would be defined
only at one place in file libpci.ver.

Note that GNU LD for Windows targets has also broken support for version
scripts, it exports nonsense data and completely ignores version
information. So always use only DLL DEF files generated by ver2def.pl
script and never pass original version script to GNU LD.

Due to another bugs in GNU dlltool, ordinals for aliased symbols from DLL
DEF file are calculated incorrectly when building import library. So
calculate ordinals manually in ver2def.pl script and explicitly put then
into generated libpci3.def DLL DEF file for every symbol, including
aliases.

And because aliases are stored only in libpci3.def file (and in import
library libpci3.dll.a generated from that DEF file) and not in DLL library
libpci3.dll itself, it is required to link all libpci applications via
import library and not directly to libpci3.dll. This is limitation of
PE/COFF format used by DLL libraries.

So for building Windows DLL library libpci3.dll is needed to use GNU
binutils 2.21 or new.

show more ...


Revision tags: v3.8.0
# 511122b8 15-Apr-2022 Martin Mares <[email protected]>

Filters now support partially specified classes and also prog-if's

Rewritten the filter parser, the old code was too twisted to extend.


# 119c1376 20-Nov-2021 Pali Rohár <[email protected]>

libpci: Add support for filling bridge resources

Extend libpci API and ABI to fill bridge resources from sysfs.


Revision tags: v3.7.0, v3.6.4, v3.6.3
# c22c314a 14-Oct-2018 Daniel Schaefer <[email protected]>

libpci is now able to find a specific instance of a capability


Revision tags: v3.6.2, v3.6.1, v3.6.0
# c02d903c 26-Jun-2018 Martin Mares <[email protected]>

Created a generic interface for device properties

Introduction of device tree node properties broke library ABI.

I gave up on creating new symbol versions whenever we add a new
device property, so

Created a generic interface for device properties

Introduction of device tree node properties broke library ABI.

I gave up on creating new symbol versions whenever we add a new
device property, so I introduced a generic property interface
with which new string properties can be added while keeping ABI
compatibility.

show more ...


Revision tags: v3.5.6, v3.5.5, v3.5.4, v3.5.3, v3.5.2, v3.5.1, v3.5.0
# 2afb0889 14-May-2016 Martin Mares <[email protected]>

Domains: Upgraded ABI version to 3.5


# 558f736b 12-Feb-2016 Sean O. Stalley <[email protected]>

Add support for enhanced allocation regions

Append [enhanced] to Regions that contain the BEI flag in sysfs.
To do this, we need to add the resource flags to the pci_dev struct.
This struct is passe

Add support for enhanced allocation regions

Append [enhanced] to Regions that contain the BEI flag in sysfs.
To do this, we need to add the resource flags to the pci_dev struct.
This struct is passed through the libpci API, so we increment the API version number.

Don't truncate least significant bits of the region size.
ex: a 2000 byte region should display [size=2000] instead of [size=1K]

Signed-off-by: Sean O. Stalley <[email protected]>

show more ...


Revision tags: v3.4.1, v3.4.0
# 7ef7f3ec 14-Sep-2015 Martin Mares <[email protected]>

NUMA node scanning is now done in an ABI-compatible way

The numa_node field was moved to the end of the public part of
struct pci_dev. As usually, it has to be requested using the
PCI_FILL_NUMA_NODE

NUMA node scanning is now done in an ABI-compatible way

The numa_node field was moved to the end of the public part of
struct pci_dev. As usually, it has to be requested using the
PCI_FILL_NUMA_NODE and pci_fill_info() is versioned.

show more ...


Revision tags: v3.3.1, v3.3.0
# 52aecc75 02-Nov-2014 Martin Mares <[email protected]>

Backward ABI compatibility for new filters and pci_fill_info

This is tricky, because we have to translate between old and new
format of struct pci_filter. At least, I added several RFU fields
so thi

Backward ABI compatibility for new filters and pci_fill_info

This is tricky, because we have to translate between old and new
format of struct pci_filter. At least, I added several RFU fields
so this hopefully won't have to happen again soon.

show more ...


Revision tags: v3.2.1, v3.2.0
# dbe1e0a6 01-Apr-2013 Martin Mares <[email protected]>

Use symbol versioning for our new member of struct pci_dev


Revision tags: v3.1.10, v3.1.9, v3.1.8, v3.1.7, v3.1.6, v3.1.5, v3.1.4, v3.1.3, v3.1.2, v3.1.1, v3.1.0, v3.1-alpha3, v3.1-alpha2
# 52c81519 18-Nov-2008 Ben Hutchings <[email protected]>

Add pci_read_vpd() function and internal read_vpd() method

Signed-off-by: Ben Hutchings <[email protected]>


Revision tags: v3.1-alpha1
# 89c51b98 11-Nov-2008 Martin Mares <[email protected]>

Updated library ABI with proper versioning.


Revision tags: v3.0.3, v3.0.2, v3.0.1, v3.0.0
# cec9f7e7 10-Apr-2008 Martin Mares <[email protected]>

Updated API and ABI version and released as 3.0.0.


# 165a50cb 18-Feb-2008 Martin Mares <[email protected]>

Released as 2.99.1-alpha1.


# 3d6b5e9c 18-Feb-2008 Martin Mares <[email protected]>

Added symbol versioning to the shared library.