solc does not generate ABI for non-pure/view public and external functions as these functions are not expected to be called directly but rather through a contract.
The ABI of these functions is subject to internal implementation and is extended compared to the standard ABI (https://github.com/ethereum/solidity/blob/5d7533b540ae423e1397e5ab3d21779944cfa7a6/docs/contracts/libraries.rst#function-signatures-and-selectors-in-libraries).
Most importantly, storage pointers (including storage mapping pointers) are supported.