The four records have different permissions, so they can't be merged.
r-xp entry describes a block of executable memory (
x permission flag). That's the code.
r--p entry describes a block of memory that is only readable (
r permission flag). That's static data (constants).
rw-p entry describes a block of memory that is writable (
w permission flag). This is for global variables of the library.
---p entry describes a chunk of address space that doesn't have any permissions (or any memory mapped to it).
All are private (
p flag), meaning that if a process modifies a page (which is only possible for the writable part), that page will be copied (copy-on-write), and other processes will not see any change.
That last entry is a gap between the code segment and the data segment that's explicitly inserted by the GNU linker under certain circumstances. The purpose of this gap is to ensure that the code (shareable between processes that use the same library) and the writable data (not shareable) are never in the same page. The size of the gap is 2MB because that's the largest page size¹ that Linux uses on your architecture (amd64). See What is the purpose of seemingly unusable memory mappings in linux? for more details.
¹ Most pages are 4kB, which is the “normal” page size. But there can be pages that use fewer MMU indirections, which is slightly faster but wastes a lot of space unless the application actually uses very large blocks of memory. Linux calls these huge pages.
Source and more information for the unmapped gap: Why does gnome-panel use 290MB? by RJK. See also the entry for
/proc/PID/maps in the Linux kernel documentation, Understanding Linux /proc/id/maps and /proc/$pid/maps shows pages with no rwx permissions on x86_64 linux on Stack Overflow.