The current code discovers this capability on the fly, but doesn't report (or write) it anywhere. On single-axis cameras, Canon code just reports 0 on the second axis. If there is any change on the second axis (pitch), ML indicator will show it as well.
5D3 reports roll and pitch, 60D reports just roll.
6D, 70D: don't remember, sorry.
These values come from the MPU. I remember trying to find where the regular (90-degree) orientation sensor changes its value on 550D, and found a pretty narrow interval, close to 45 degrees. This makes me think the orientation hardware (accelerometer) might be present on all cameras; just the MPU doesn't report it to the main CPU.
Figuring out would require some familiarity with TX19A (DIGIC 4) or SH2A-FPU (guess, DIGIC 5 and newer). Very low priority from my side.